我使用以下命令从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'
答案 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();