【问题标题】:why does _spark_metadata has all parquet partitioned files inside 0 but cluster having 2 workers?为什么 _spark_metadata 的所有 parquet 分区文件都在 0 内,但集群有 2 个工作人员?
【发布时间】:2019-02-09 07:17:11
【问题描述】:

我有一个小火花簇,有一个主人和两个工人。我有一个 Kafka 流应用程序,它从 Kafka 流式传输数据并以 parquet 格式和附加模式写入目录。

到目前为止,我可以使用以下关键行从 Kafka 流中读取并将其写入镶木地板文件。

val streamingQuery = mydf.writeStream.format("parquet").option("path", "/root/Desktop/sampleDir/myParquet").outputMode(OutputMode.Append).option("checkpointLocation", "/root/Desktop/sampleDir/myCheckPoint").start()

我已经登记了两名工人。创建了 3-4 个 snappy parquet 文件,文件名的前缀为 part-00006-XXX.snappy.parquet

但是当我尝试使用以下命令读取这个 parquet 文件时:

val dfP = sqlContext.read.parquet("/root/Desktop/sampleDir/myParquet")

它显示一些拼花分割文件的文件未找到异常。奇怪的是,这些文件已经存在于其中一个工作节点中。

当进一步检查日志时,可以观察到 spark 正试图从一个工作节点中获取所有 parquet 文件,并且由于并非所有 parquet 文件都存在于一个工作节点中,因此除了那些文件之外,它正在命中在提到的镶木地板路径中找不到。

我是否错过了流式查询或读取数据时的某些关键步骤?

注意:我没有 HADOOP 基础架构。我只想使用文件系统。

【问题讨论】:

    标签: apache-spark apache-kafka spark-streaming parquet


    【解决方案1】:

    您需要一个共享文件系统。

    Spark 假设所有节点(驱动程序和工作程序)都可以看到相同的文件系统。 如果您使用的是基本文件系统,那么每个节点都会看到自己的文件系统,这与其他节点的文件系统不同。

    HDFS 是获取通用共享文件系统的一种方法,另一种方法是使用通用 NFS 挂载(即将相同远程文件系统从所有节点挂载到相同路径)。其他共享文件系统也存在。

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 2018-12-15
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 2021-09-11
      • 2015-04-28
      相关资源
      最近更新 更多