我正在尝试将Spark 2.4连接到Hive Metastore 3,以对S3上的ORC文件进行分类。
火花配置:
sparkConf
.set("spark.sql.catalogImplementation", "hive")
.set("hive.metastore.uris", thrift://metastore:9083)
.set("spark.sql.warehouse.dir", "s3:/data")
火花代码:
input
.write()
.mode(SaveMode.Overwrite)
.format("orc")
.option("path", "s3:/data/table")
.saveAsTable("table");
Spark可以连接并在metastore中创建表,但是创建不正确。
这是目录中的表模式:
CREATE TABLE hive.default.table (
col array(varchar),
date integer
) WITH (
external_location = 'file:/user/hive/warehouse/table-__PLACEHOLDER__',
format = 'SEQUENCEFILE',
partitioned_by = ARRAY['date']
)
external_location
是错误的,没有明确的架构(列),并且表format
是错误的。
我也收到此警告,我不确定它是否与问题有关:
Could not persist default.table in a Hive compatible way. Persisting it into Hive metastore in Spark SQL specific format.
有人能够以这种方式使用Metastore 3吗?
我熟悉https://stackoverflow.com/a/53065525/3276980,更喜欢使用saveAsTable