spark scala create external hive table不使用location作为变量

b4qexyjb  于 2021-06-29  发布在  Hive
关注(0)|答案(2)|浏览(461)

我正在尝试从spark应用程序创建配置单元外部表,并将location作为变量传递给sql命令。它没有创建配置单元表,我也没有看到任何错误。

val location = "/home/data"
 hiveContext.sql(s"""CREATE EXTERNAL TABLE IF NOT EXISTS TestTable(id STRING,name STRING) PARTITIONED BY (city string)  STORED AS PARQUET LOCATION '${location}' """)
lymgl2op

lymgl2op1#

不确定哪个版本有此限制。我用的是spark 1.6,hive 1.1。
我可以创建外部表,请按照以下步骤操作:

var query = "CREATE EXTERNAL TABLE avro_hive_table ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'TBLPROPERTIES   ('avro.schema.url'='hdfs://localdomain/user/avro/schemas/activity.avsc')    STORED AS INPUTFORMAT    'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'    LOCATION    '/user/avro/applog_avro'"
var hiveContext = new org.apache.spark.sql.hive.HiveContext(sc);

hiveContext.sql(query);
var df = hiveContext.sql("select count(*) from avro_hive_table");
z9zf31ra

z9zf31ra2#

spark只支持创建托管表。即使这样,也有严格的限制:它不支持动态分区表。
热释光;dr您不能通过spark创建外部表。我能读懂

相关问题