如何使用Spark(pyspark)编写镶木地板文件?

ebe*_*tbm 13 python pyspark spark-dataframe

我是Spark的新手,我一直在尝试将一个Dataframe转换为Spark中的镶木地板文件,但我还没有成功.该文件说,我可以使用write.parquet函数来创建该文件.但是,当我运行脚本时它向我显示:AttributeError:'RDD'对象没有属性'write'

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")
Run Code Online (Sandbox Code Playgroud)

你知道怎么做这个吗?

我正在使用的spark版本是为Hadoop 2.7.3构建的Spark 2.0.1.

ebe*_*tbm 31

错误是由于返回的textFile方法和我需要的方法是一个.SparkContextRDDDataFrame

SparkSession有一个SQLContext引擎盖.所以我需要使用DataFrameReader它来正确读取CSV文件,然后再将其转换为镶木地板文件.

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")
Run Code Online (Sandbox Code Playgroud)

  • 即使您的代码是正确的,您的解释也不是.SparkContext不会将CSV文件转换为RDD.来自SparkContext的`textFile`方法返回一个RDD,你需要的是一个`DataFrame`,因此是一个SQLContext或一个HiveContext,它也被封装在一个SparkSession中**spark 2 +**你是否关心纠正这些信息并接受答案关闭这个问题? (4认同)
  • 感谢@eliasah 的反馈! (2认同)

Pow*_*ers 7

您还可以使用koalas从 Spark 写出 Parquet 文件。这个库非常适合喜欢 Pandas 语法的人。Koalas 的底层是 PySpark。

这是考拉代码:

import databricks.koalas as ks

df = ks.read_csv('/temp/proto_temp.csv')
df.to_parquet('output/proto.parquet')
Run Code Online (Sandbox Code Playgroud)