【发布时间】:2019-10-27 13:04:05
【问题描述】:
我正在尝试使用不同的时间戳对配置单元表进行分区。我有一个带有时间戳的表,但是当我执行配置单元分区查询时,它说它不是有效的分区列。这是表格:
+---+-----------------------+
|id |rc_timestamp |
+---+-----------------------+
|1 |2017-06-12 17:18:39.824|
|2 |2018-06-12 17:18:39.824|
|3 |2019-06-12 17:18:39.824|
+---+-----------------------+
spark.sql("SET hive.exec.dynamic.partition.mode=nonrestrict")
val tempTable = spark.sql("SELECT * FROM partition_table")
val df = tempTable.select("rc_timestamp")
val a = x.toString().replaceAll("[\\[\\]]","")
df.collect().foreach(a => {
spark.sql(s"ALTER TABLE mydb.partition_table ADD IF NOT EXISTS PARTITION
(rc_timestamp = '$a')").show()
)}
这是我得到的错误:
org.apache.spark.sql.AnalysisException: rc_timestamp is not a valid partition column
in table mydb.partition_table.;
【问题讨论】:
-
请您发布表格定义吗?
-
spark.sql("CREATE TABLE part_table (id INT, rc_timestamp timestamp)")
-
请创建一个带分区的表。参考这里创建一个分区表cwiki.apache.org/confluence/display/Hive/…
-
我已经有一个原始表中有数百万条记录的表,所以我试图更改表以添加分区。这不是有效的语法吗:“ALTER TABLE mydb.partition_table ADD IF NOT EXISTS PARTITION (rc_timestamp = '$a')”
-
这是一个有效的语法。但是你不能在非分区表上使用它
标签: scala apache-spark hive apache-spark-sql hiveql