【问题标题】:Creating DataFrames from a TSV file [duplicate]从 TSV 文件创建 DataFrames [重复]
【发布时间】:2018-03-16 03:56:42
【问题描述】:

我在 scala 中编程: 我有一个包含 13 个“属性”的 TSV 文件。 我的目标是制作一个数据框。 到目前为止,我已经设法: 1)制作一个org.apache.spark.rdd.RDD[String]

val rdd = sc.textFile("file.tsv")

我可以拆分它:

rddsplit = rdd.map(_split("\t"))

据我所知,我现在必须制作一个 RDD[ROW],我可以将其转换为数据框:

val df = rddrow.toDF()

但是如何从 rddsplit 转换为 RDD[ROW]?

感谢您的帮助

【问题讨论】:

  • 为什么直接读为csv文件,分隔符为制表符\t
  • 我正在使用 Scala 版本 2.11.8
  • @CoMacNo 链接的副本包含有关如何直接将 TSV 作为数据帧读取的信息,而无需先读取为 RDD 并拆分。直接一行代码就可以搞定。
  • Shankar Koirala:我只是用他们的方式学会了拆分它,我真的没有充分的理由为什么我会这样做。

标签: scala apache-spark dataframe rdd


【解决方案1】:

可以直接用spark csv读取TSV文件

Spark 2.X

val spark = SparkSession.builder().appName("test").master("local[*]").getOrCreate()
val data = spark.read.option("delimiter", "\t").csv("path to file")

Spark 1.X

val data = sqlContext.read.format("com.databricks.spark.csv")
  .option("delimiter", "\t")
  .load("path to file")

这为您提供了数据框,您可以通过简单的方式将其转换为RDD[ROW]

data.rdd

有关选项的更多信息,请参阅here

【讨论】:

  • 我很难理解选项参数。定界符通常是告诉边界在哪里的东西,但在 tsv 中会不会是“\ t”?什么是“\t”参数? (对不起,愚蠢的问题,但我对这些东西很陌生)
  • 你的数据不是用"\t" 分隔的吗?如果是这样,option("delimiter", "\t")用于将分隔符设置为制表符,默认用\t分隔,用,分隔
  • 是的。所以我应该能够在 Spark 2.X 下运行代码(如果我只是选择正确的路径)而无需更改任何其他内容。但我收到错误消息。
  • 你得到什么错误?
  • 错误太长以至于 cmd dosent 显示顶部
猜你喜欢
  • 2016-10-22
  • 1970-01-01
  • 2021-01-03
  • 2011-12-26
  • 2013-02-21
  • 2016-01-21
  • 2011-05-25
  • 1970-01-01
  • 2021-06-10
相关资源
最近更新 更多