根据spark文件https://spark.apache.org/docs/2.1.0/sql-programming-guide.html#supported-配置单元功能支持群集的配置单元语句。但是当我尝试使用beeline中的以下查询创建表时
CREATE TABLE set_bucketing_test (key INT, value STRING) CLUSTERED BY (key) INTO 10 BUCKETS;
我得到以下错误
Error: org.apache.spark.sql.catalyst.parser.ParseException:
Operation not allowed: CREATE TABLE ... CLUSTERED BY(line 1, pos 0)
不知道我犯了什么错。有什么帮助吗?
1条答案
按热度按时间bvuwiixz1#
您可以利用sparksql中的cluster-by特性来创建表、连接表等,这在spark2.1+
看到了吗https://issues.apache.org/jira/browse/spark-15453
而且当前配置单元无法识别此功能,因为spark和配置单元之间的元数据不兼容,这就是为什么即使在配置单元端识别此表,也不能使用相同的语法,因为它会将所有列视为
array
以下示例可能会给您一些想法:准备来源
val df = (0 until 80000).map(i => (i, i.toString, i.toString)).toDF("item_id", "country", "state").coalesce(1)
####从源创建两个bucket表您将看到“which is not compatible with hive.”滚动到右侧
加入他们并解释
由于音量较小,请先禁用广播连接。
该方案在spark2.1.0中避免交换和排序,在spark2.0中避免交换,只有过滤和扫描才能证明数据的局部性利用。