我在Spark中很新,我一直在尝试将数据帧转换为Spark中的镶木地板文件,但我还没有成功。文档说我可以使用write.parquet函数来创建文件。但是,当我运行脚本时,它向我显示:属性错误:"RDD"对象没有属性"写入"
from pyspark import SparkContext
sc = SparkContext("local", "Protob Conversion to Parquet ")
# spark is an existing SparkSession
df = sc.textFile("/temp/proto_temp.csv")
# Displays the content of the DataFrame to stdout
df.write.parquet("/output/proto.parquet")
你知道怎么做吗?
我正在使用的Spark版本是为Hadoop 2.7.3构建的Spark 2.0.1。
错误是由于 SparkContext
的 textFile
方法返回了一个RDD
,我需要的是一个DataFrame
。
SparkSession在引擎盖下有一个SQLContext
。因此,在将 CSV 文件转换为镶木地板文件之前,我需要使用该DataFrameReader
正确读取 CSV 文件。
from pyspark.sql import SparkSession
spark = SparkSession
.builder
.appName("Protob Conversion to Parquet")
.config("spark.some.config.option", "some-value")
.getOrCreate()
# read csv
df = spark.read.csv("/temp/proto_temp.csv")
# Displays the content of the DataFrame to stdout
df.show()
df.write.parquet("output/proto.parquet")
你也可以用考拉从Spark写出Parquet文件。 这个库非常适合喜欢 Pandas 语法的人。 考拉是引擎盖下的PySpark。
这是考拉代码:
import databricks.koalas as ks
df = ks.read_csv('/temp/proto_temp.csv')
df.to_parquet('output/proto.parquet')