Pyspark 如何流式传输所有文件的hdfs位置并同时写入另一个hdfs位置

Pyspark 如何流式传输所有文件的hdfs位置并同时写入另一个hdfs位置,pyspark,hdfs,azure-data-lake,azure-databricks,Pyspark,Hdfs,Azure Data Lake,Azure Databricks,我在一个hdfs位置有大约20K的拼花格式JSON文件。 我的工作是流式传输位置并读取数据帧中的所有文件,然后在另一个hdfs位置写入相同的文件 有人能建议我怎么做吗。我正在使用Azure Databricks平台和pyspark来完成此任务。我不确定您是想以“流”方式还是以“批处理”方式完成此任务。但是,您可以使用流式处理功能来完成此操作,并触发作业一次 (spark .readStream # Read data as streaming .schema(USER_SCHEMA) #

我在一个hdfs位置有大约20K的拼花格式JSON文件。 我的工作是流式传输位置并读取数据帧中的所有文件,然后在另一个hdfs位置写入相同的文件


有人能建议我怎么做吗。我正在使用Azure Databricks平台和pyspark来完成此任务。

我不确定您是想以“流”方式还是以“批处理”方式完成此任务。但是,您可以使用流式处理功能来完成此操作,并触发作业一次

    (spark
.readStream # Read data as streaming
.schema(USER_SCHEMA) # For streaming, you must provide the input schema of data
.format("parquet")
.load(PARQUET_ORIGIN_LOCATION)
.writeStream
.format("delta")
.option("path", PARQUET_DESTINATION_LOCATION + 'data/')  # Where to store the data
.option("checkpointLocation", PARQUET_DESTINATION_LOCATION + 'checkpoint/')  # The check point location
.option("overwriteSchema", True)  # Allows the schema to be overwritten
.queryName(QUERY_NAME)  # Name of the query
.trigger(once=True)  # For Batch Processing
.start()
)

谢谢。我想用流媒体的方式来做。我想知道在不预先定义模式的情况下是否可以这样做。因为我所有的源拼花文件都在同一个hdfs位置,但在流传输之后,我想使用五种不同的模式将其存储在目标位置。这就是我面临的问题。有办法解决这个问题吗