相关疑难解决方法(0)

在将csv文件作为数据框读取时提供模式

我试图将csv文件读入数据帧.我知道我的数据帧的架构应该是什么,因为我知道我的csv文件.另外我使用spark csv包来读取文件.我试图指定如下的架构.

val pagecount = sqlContext.read.format("csv")
  .option("delimiter"," ").option("quote","")
  .option("schema","project: string ,article: string ,requests: integer ,bytes_served: long")
  .load("dbfs:/databricks-datasets/wikipedia-datasets/data-001/pagecounts/sample/pagecounts-20151124-170000")
Run Code Online (Sandbox Code Playgroud)

但是当我检查我创建的数据框架的模式时,它似乎采用了自己的模式.我做错了吗?如何制作火花来接收我提到的架构?

> pagecount.printSchema
root
|-- _c0: string (nullable = true)
|-- _c1: string (nullable = true)
|-- _c2: string (nullable = true)
|-- _c3: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

scala dataframe apache-spark apache-spark-sql spark-csv

35
推荐指数
6
解决办法
7万
查看次数

pyspark:spark.read.format(“csv”)与spark.read.csv的性能差异

任何人都知道spark.read.format("csv") 与spark.read.csv 有什么区别?

有人说“spark.read.csv”是“spark.read.format(“csv”)”的别名,但我发现两者之间存在差异。我做了一个实验,使用新的 pyspark 会话执行下面的每个命令,以便没有缓存。

DF1 耗时 42 秒,而 DF2 仅耗时 10 秒。csv 文件有 60+ GB。

DF1 = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("hdfs://bda-ns/user/project/xxx.csv")

DF2 = spark.read.option("header", "true").csv("hdfs://bda-ns/user/project/xxx.csv")
Run Code Online (Sandbox Code Playgroud)

我之所以研究这个问题是因为我需要在过滤后对2个数据帧进行联合,然后写回hdfs,并且花了很长时间来写入(16小时后仍在写入......)

csv pyspark

4
推荐指数
1
解决办法
4406
查看次数