Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将配置单元中的数据集保存为avro格式合并列_Java_Apache Spark_Hive_Hdfs_Avro - Fatal编程技术网

Java 将配置单元中的数据集保存为avro格式合并列

Java 将配置单元中的数据集保存为avro格式合并列,java,apache-spark,hive,hdfs,avro,Java,Apache Spark,Hive,Hdfs,Avro,我试图将数据集中的数据以avro格式放入hive。但数据集中的每一列都合并到配置单元表中的一列中 Dataset<obj1> = .... Dataset<obj1>.printSchema(); root |-- a: double (nullable = true) |-- b: string (nullable = true) |-- c: string (nullable = true) |-- d: string (nullable = true)

我试图将数据集中的数据以avro格式放入hive。但数据集中的每一列都合并到配置单元表中的一列中

Dataset<obj1> = ....

Dataset<obj1>.printSchema();

root
 |-- a: double (nullable = true)
 |-- b: string (nullable = true)
 |-- c: string (nullable = true)
 |-- d: string (nullable = true)
 |-- e: string (nullable = true)
结果:

    CREATE TABLE `DB.TABLE`( 
    `col` array<string> COMMENT 'from deserializer')
    PARTITIONED BY (                                   
       `a` string)
...
创建表`DB.TABLE`(
`列“反序列化程序中的数组注释”)
被(
`(字符串)
...
目前,解决方案之一是将数据集作为avro文件放入HDFS:

  Dataset<obj1>
        .write()
        .mode(SaveMode.Overwrite)
        .partitionBy("a")
        .format("com.databricks.spark.avro")
        .option("recordName", "recordName_custom")
        .option("recordNamespace", "recordNamespace_custom")
        .save("path");
数据集
.write()
.mode(SaveMode.Overwrite)
.分割人(“a”)
.format(“com.databricks.spark.avro”)
.选项(“记录名称”、“记录名称\自定义”)
.option(“recordNamespace”、“recordNamespace\u自定义”)
.保存(“路径”);
然后为其创建一个外部表。 在批处理结束时,如果需要,我们将执行MSCK修复以检测新分区

有什么解决方案,最佳实践建议吗

使用的版本:

com.databricks,spark-avro_2.11:4.0.0
火花:2.3.2
Hadoop:2.3.2
HDFS:3.1.1.3.1
蜂巢:3.1.0

    CREATE TABLE `DB.TABLE`( 
    `col` array<string> COMMENT 'from deserializer')
    PARTITIONED BY (                                   
       `a` string)
...
  Dataset<obj1>
        .write()
        .mode(SaveMode.Overwrite)
        .partitionBy("a")
        .format("com.databricks.spark.avro")
        .option("recordName", "recordName_custom")
        .option("recordNamespace", "recordNamespace_custom")
        .save("path");