【问题标题】:Writing Dataset/Dataframe to HDFS directory without name of the column after partitionBy() :Spark 2.1.0将 Dataset/Dataframe 写入 HDFS 目录,但 partitionBy() 后没有列名:Spark 2.1.0
【发布时间】:2018-04-21 14:20:53
【问题描述】:

我正在使用 partitionBy() 按某个 ID 对数据集/数据框进行分区。但是,当文件被写入时,它正在创建目录,其名称和列的值由“=”符号分隔。

Seq<String> partitionCols = JavaConversions.asScalaBuffer(Arrays.asList("alert_pas_documentid"));
                fnDatasetWithDocumentID.write().mode("overwrite").partitionBy(partitionCols).json("/user/creando/cdx/alert_pas/");

如何避免获取列名和“=”符号。这是创建的示例目录。

/user/creando/cdx/inv_devices/inv_devices_documentid=700001_596970dba94c040001381a71_700001

【问题讨论】:

    标签: apache-spark dataset partition-by


    【解决方案1】:

    您可以在写入之前重新分区数据集,而不是与写入器重新分区,即:

    Seq<Column> partitionCols = ...
    fnDatasetWithDocumentID.repartition(partitionCols).write().mode("overwrite").json("/user/creando/cdx/alert_pas/");
    

    【讨论】:

    • 我尝试了这个选项,但是当我执行 spark 作业时,spark 作业没有进入 RUNNING 阶段。相反,它总是显示 18/04/21 16:27:04 INFO yarn.Client: Application report for application_1522909218432_0088 (state: ACCEPTED)
    • 应用程序报告:应用程序 ID:应用程序_1522909218432_0088 应用程序名称:com.cisco.sdp.cdx.InventoryStreamingJob.InventoryStreaming 应用程序类型:SPARK 用户:creando 队列:root.creando 开始时间:1524327876389 完成-时间:0 进度:0% 状态:接受 最终状态:未定义 跟踪 URL:N/A RPC 端口:-1 AM 主机:N/A 聚合资源分配:0 MB-秒,0 vcore-seconds 诊断:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2023-02-01
    • 1970-01-01
    相关资源
    最近更新 更多