当前位置: 首页 > 知识库问答 >
问题:

Spark中csv的Mulitline标题

王锐
2023-03-14
version=2
date=2020-01-31

id,name,age
1,Alice,21
2,Bob,23
    null

让我知道,如果你知道一个更优雅的方式做到这一点。

共有1个答案

周翰
2023-03-14

我尝试了所有的方法。以下是简化代码:

方法1

方法1是使用bash脚本中的Hadoop命令等。

(echo -e "version=2\ndate=2020-01-31\n\nid,name,age" | gzip  -vc ; hadoop fs -cat "$INPUT_DIR/*" ) | hadoop fs -put - "$OUTPUT_PATH"
    null
import org.apache.hadoop.io.compress.GzipCodec

val heading = """version=2
date=2020-01-31

id,name,age""".split("\n", -1).toSeq

val headingRdd: RDD[String] = sc.parallelize(heading)

val mediamathRdd: RDD[String] = df.rdd.map(row => row.mkString(","))

val combinedResult: RDD[String] = (headingRdd union mediamathRdd)

combinedResult.repartition(1).saveAsTextFile(path, classOf[GzipCodec])

df.repartition(1)
.withColumnRenamed("id", "version=2\ndate=2020-01-31\n\nid")
.option("header", true)
.option("delimiter", ",")
.option("quoteMode", "NONE")
.option("quote", " ")
.option("codec", "gzip")
.csv(path)
 version=2
date=2020-01-31

id ,name,age
1,Alice,21
2,Bob,23

我还尝试了:

.option(“quote”,“\u0000”)

它实际上打印ascii宪章零,虽然这没有显示在我的HDFS查看器中,但这不是规范的一部分。

 类似资料:
  • csv文件的格式为^A作为列分隔符,^B作为行分隔符/记录分隔符。因此,我使用databricks spark csv库以以下方式创建数据帧: 看看spark csv的文档,关于headers选项,它说:当设置为true时,第一行文件将用于命名列,而不会包含在数据中。所有类型都将假定为字符串。默认值为false。 但是,我们没有使用\n,而是使用^B。那么,有没有办法告诉spark-csv库我们的

  • 我正在尝试使用spack-csv从spack-shell中的aws s3读取csv。 下面是我所做的步骤。使用下面的命令启动spack-shell 箱子/火花壳——包装com。数据块:spark-csv\u 2.10:1.2.0 在shell中,执行以下scala代码 获取以下错误 我在这里错过了什么?请注意,我可以使用 同样的scala代码在databricks笔记本中也可以正常工作 在spar

  • 假设我有一个简单的管道分隔文件,缺少值: 我把它读到了一个数据目录中: 缺少的第三列不是null值,而是字符串null:

  • 我想在Zeppelin中阅读csv文件,并想使用Databricks的spark-csv包:https://github.com/databricks/spark-csv 提前感谢!

  • 我有一份CSV档案 1577,真,假,假,假,真 我试图用自定义模式加载csv文件, 但模式的可正确为null并没有按预期更改。