Indexing 如何在Spark表中创建索引?

Indexing 如何在Spark表中创建索引?,indexing,apache-spark-sql,Indexing,Apache Spark Sql,我知道Spark Sql几乎和Hive一样 现在我已经创建了一个表,当我执行Spark sql查询来创建表索引时,它总是给我以下错误: SQL语句中出错:AnalysisException:create index语句中不匹配的输入“”应与“')相近 我使用的Spark sql查询是: CREATE INDEX word_idx ON TABLE t (id) id的数据类型为bigint。 在此之前,我还尝试在这个表的“word”列上创建表索引,它给了我相同的错误 那么,有没有办法通过Sp

我知道Spark Sql几乎和Hive一样

现在我已经创建了一个表,当我执行Spark sql查询来创建表索引时,它总是给我以下错误:

SQL语句中出错:AnalysisException:create index语句中不匹配的输入“”应与“')相近

我使用的Spark sql查询是:

CREATE INDEX word_idx ON TABLE t (id)
id的数据类型为bigint。 在此之前,我还尝试在这个表的“word”列上创建表索引,它给了我相同的错误


那么,有没有办法通过Spark sql查询创建索引?

实际上,没有办法通过Spark sql查询创建索引。但是有一个名为zipWithIndex的
RDD
函数。您可以将
数据帧
转换为
RDD
,执行
zipWithIndex
,并将生成的
RDD
转换回
数据帧

有关完整的解决方案,请参见此

另一种方法是使用

是的,我在一些RDD上使用zipWithIndex,但对于这一个,我需要在特定列上创建索引,zipWithIndex不是很方便。是的,我需要先分离数据,使用zipWithIndex,然后加入。我想知道是否有一种更简单的方法。也许可以看看
mLib
StringIndexer
?如果不需要按顺序排列ID,可以单调递增地查看ID()