Mar*_*tal 3 google-cloud-storage apache-spark google-cloud-platform
作业已提交并成功运行。但桶里根本就没有数据。我该如何解决呢?
df = spark.createDataFrame([["Amy", "lily", 12], ["john", "tom", 34]]).toDF(*["first_name", "last_name", "age"])
df.write.format("parquet").partitionBy("age").option("path", "gs://my_bucket/my_table")
Run Code Online (Sandbox Code Playgroud)
问题中的代码配置写入操作,但从不触发写入本身。
为了实际触发写入操作,您需要调用接口save中的函数之一Writer。
例如,以下将完成这项工作:
df.write.format("parquet").partitionBy("age").option("path", "gs://my_bucket/my_table").save()
Run Code Online (Sandbox Code Playgroud)
或者:
df.write.format("parquet").partitionBy("age").save("gs://my_bucket/my_table")
Run Code Online (Sandbox Code Playgroud)
甚至:
df.write.partitionBy("age").parquet("gs://my_bucket/my_table")
Run Code Online (Sandbox Code Playgroud)
模式详情:
df.write返回 a 的实例DataFrameWriter;这是API:https://spark.apache.org/docs/2.4.6/api/scala/index.html#org.apache.spark.sql.DataFrameWriter
DataFrameWriterAPI 在本质上与所有其他 Spark API 是一致的:它是惰性的。除非触发操作,否则不会执行任何操作。为此, 的实例的DataFrameWriter行为类似于构建器模式实现:对format、option、mode等的后续调用。只配置最终可能执行的写操作。配置操作后,您可以通过save在此实例上调用或类似方法来触发它。
同样,DataFrameWriter还允许您多次重复使用写入操作(例如,配置一组基本选项,然后调用两次以写入 parquet 和 csv 文件;或写入不同的位置等)。
| 归档时间: |
|
| 查看次数: |
5324 次 |
| 最近记录: |