gpt4 book ai didi

apache-spark - 如何将数据帧(从 hive 表中获取)写入 hadoop SequenceFile 和 RCFile?

转载 作者:行者123 更新时间:2023-12-04 15:41:03 26 4
gpt4 key购买 nike

我可以把它写成

  • ORC
  • PARQUET直接和
  • TEXTFILE
  • AVRO

  • 使用来自数据块的附加依赖项。
        <dependency>
    <groupId>com.databricks</groupId>
    <artifactId>spark-csv_2.10</artifactId>
    <version>1.5.0</version>
    </dependency>
    <dependency>
    <groupId>com.databricks</groupId>
    <artifactId>spark-avro_2.10</artifactId>
    <version>2.0.1</version>
    </dependency>
    示例代码:
        SparkContext sc = new SparkContext(conf);
    HiveContext hc = new HiveContext(sc);
    DataFrame df = hc.table(hiveTableName);
    df.printSchema();
    DataFrameWriter writer = df.repartition(1).write();

    if ("ORC".equalsIgnoreCase(hdfsFileFormat)) {
    writer.orc(outputHdfsFile);

    } else if ("PARQUET".equalsIgnoreCase(hdfsFileFormat)) {
    writer.parquet(outputHdfsFile);

    } else if ("TEXTFILE".equalsIgnoreCase(hdfsFileFormat)) {
    writer.format("com.databricks.spark.csv").option("header", "true").save(outputHdfsFile);

    } else if ("AVRO".equalsIgnoreCase(hdfsFileFormat)) {
    writer.format("com.databricks.spark.avro").save(outputHdfsFile);
    }
    有没有办法将数据帧写入 hadoop SequenceFile 和 RCFile?

    最佳答案

    您可以使用 void saveAsObjectFile(String path)保存 RDD作为序列化对象的 SequenceFile。因此,在您的情况下,您必须检索 RDD来自 DataFrame :

    JavaRDD<Row> rdd = df.javaRDD;
    rdd.saveAsObjectFile(outputHdfsFile);

    关于apache-spark - 如何将数据帧(从 hive 表中获取)写入 hadoop SequenceFile 和 RCFile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39830518/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com