将数据框的架构保存在S3位置

时间:2019-06-21 16:37:59

标签: apache-spark amazon-s3 pyspark databricks

我使用以下命令从S3中的数据砖中读取了一个镶木文件

df = sqlContext.read.parquet('s3://path/to/parquet/file')

我想读取数据框的架构,可以使用以下命令进行操作:

df_schema = df.schema.json()

但是我无法将df_schama对象写入S3上的文件。 注意:我愿意不创建json文件。我只想将数据框的架构保存为AWS S3中的任何文件类型(可能是文本文件)。

我尝试按如下方式编写json模式,

df_schema.write.csv("s3://path/to/file")

a.write.format('json').save('s3://path/to/file')

他们两个都给我以下错误:

  

AttributeError: 'str' object has no attribute 'write'

2 个答案:

答案 0 :(得分:0)

df.schema.json() 结果string对象和string对象将没有 .write 方法。

In RDD Api:

df_schema = df.schema.json()

并行化df_schema变量以创建rdd,然后使用 .saveAsTextFile 方法将架构写入s3。

sc.parallelize([df_schema]).saveAsTextFile("s3://path/to/file")

(或)

In Dataframe Api:

from pyspark.sql import Row
df_schema = df.schema.json()
df_sch=sc.parallelize([Row(schema=df1)]).toDF()
df_sch.write.csv("s3://path/to/file")
df_sch.write.text("s3://path/to/file") //write as textfile

答案 1 :(得分:0)

这是保存架构并将其应用于新的csv数据的有效示例:

listView.notifyDataSetChanged();