如何在 Spark Table 中创建索引?
Posted
技术标签:
【中文标题】如何在 Spark Table 中创建索引?【英文标题】:How to create index in Spark Table? 【发布时间】:2016-03-20 05:57:33 【问题描述】:我知道 Spark Sql 与 Hive 几乎相同。
现在我创建了一个表,当我执行 Spark sql 查询来创建表索引时,它总是给我这个错误:
SQL 语句中的错误:AnalysisException:在创建索引语句中输入不匹配的输入 '' 期望 AS 靠近 ')'
我使用的 Spark sql 查询是:
CREATE INDEX word_idx ON TABLE t (id)
id的数据类型是bigint。 在此之前,我也尝试在该表的“word”列上创建表索引,它给了我同样的错误。
那么,有没有办法通过 Spark sql 查询创建索引呢?
【问题讨论】:
【参考方案1】:真的,没有办法通过 Spark SQL 查询来做到这一点。但是有一个名为zipWithIndex
的RDD
函数。您可以将DataFrame
转换为RDD
,执行zipWithIndex
,然后将生成的RDD
转换回DataFrame
。
请参阅此 community Wiki article 了解完整的解决方案。
另一种方法是使用 Spark MLLib String Indexer。
【讨论】:
是的,我在一些RDD上使用了zipWithIndex,但是对于这个,我需要在特定列上创建索引,zipWithIndex不是很方便是的,我需要先分离数据,使用zipWithIndex,然后加入。我想知道是否有更简单的方法。 也许看看mLib
StringIndexer
?
如果您不需要 ID 是连续的,您可以查看 monotonically_increasing_id()以上是关于如何在 Spark Table 中创建索引?的主要内容,如果未能解决你的问题,请参考以下文章