Apache spark 从pyspark保存数据帧时在Ignite表中创建索引

Apache spark 从pyspark保存数据帧时在Ignite表中创建索引,apache-spark,pyspark,ignite,Apache Spark,Pyspark,Ignite,我使用以下代码将Spark数据帧保存到Apache Ignite表: df.write\ .format("ignite")\ .option("table","REPORT")\ .option("primaryKeyFields", ', '.join(map(str, df.schema.names[:-1])))\ .option("config",configFile)\ .option("compression", "gzip")\ .mode("overwrite")\ .save

我使用以下代码将Spark数据帧保存到Apache Ignite表:

df.write\
.format("ignite")\
.option("table","REPORT")\
.option("primaryKeyFields", ', '.join(map(str, df.schema.names[:-1])))\
.option("config",configFile)\
.option("compression", "gzip")\
.mode("overwrite")\
.save()
但是,我找不到如何使用此owerwrite保存在字段上创建索引

我需要这个,但在.save()操作中:

CREATE INDEX REPORT_FIELD_IDX ON PUBLIC.REPORT (FIELD)

不,使用Spark保存数据帧时不能这样做。创建表和创建索引是两种不同的操作


数据帧保存到Ignite的所有选项,如您所见,没有创建索引的选项

不,使用Spark保存数据帧时不能这样做。创建表和创建索引是两种不同的操作


数据帧保存到Ignite的所有选项,如您所见,没有创建索引的选项

使用如下语法非常简单:

CREATE INDEX IF NOT EXISTS AGE_IDX ON "PUBLIC".Person (AGE)
如果未创建新表,则如果不存在,则将起作用,而不会执行任何操作。否则,将创建索引

它可以使用任何可以与Ignite一起使用的SQL工具(webconsole、visor、sqlline、jdbc、odbc等)运行,但我猜您将从Spark job中执行它。因此,您可以尝试使用IgniteSparkSession或IgniteRDD在Ignite上运行SQL:

IgniteSparkSession igniteSession = IgniteSparkSession.builder()
                .appName("Spark Ignite example")
                .igniteConfig(configPath)
                .getOrCreate();

igniteSession.sqlContext().sql("CREATE INDEX IF NOT EXISTS AGE_IDX ON \"PUBLIC\".Person (AGE)");


使用以下语法非常简单:

CREATE INDEX IF NOT EXISTS AGE_IDX ON "PUBLIC".Person (AGE)
如果未创建新表,则如果不存在,则将起作用,而不会执行任何操作。否则,将创建索引

它可以使用任何可以与Ignite一起使用的SQL工具(webconsole、visor、sqlline、jdbc、odbc等)运行,但我猜您将从Spark job中执行它。因此,您可以尝试使用IgniteSparkSession或IgniteRDD在Ignite上运行SQL:

IgniteSparkSession igniteSession = IgniteSparkSession.builder()
                .appName("Spark Ignite example")
                .igniteConfig(configPath)
                .getOrCreate();

igniteSession.sqlContext().sql("CREATE INDEX IF NOT EXISTS AGE_IDX ON \"PUBLIC\".Person (AGE)");


很抱歉,但是创建和插入它也是不同的操作。我们将它与保存(覆盖)抽象一起使用。对不起,创建和插入它也是不同的操作。我们将其与保存(覆盖)抽象一起使用。