连接pyspark以点燃



all,

我一直在与Pyspark和Ignite Itegention斗争,大约2个星期,我处于智慧。

我一直在尝试上传在Pyspark中创建的表格以点燃。

我一直在启动脚本

spark-submit --master spark://my_host:my_port --jars $IGNITE_HOME/libs/*jar, $IGNITE_HOME/libs/optional/ignite-spark/jar, $IGNITE_HOME/libs/ignite-spring/*jar $IGNITE_HOME/libs/ignite-indexking/*jar my_python_script.py

my_python_script.py就像:

import pyspark
spark = pyspark.sql.SparkSession
    .builder
    .appName("Ignite")
    .getOrCreate()
# create the data frame
columns = ["COL1", "COL2", "ID"]
vals = [("a", "b", 0), ("c", "d", 1)]
df = spark.createDataFrame(vals, columns)
df.write
  .format("jdbc")
  .option("driver", "org.apache.ignite.IgniteJdbcThinDriver")
  .option("url", "jdbs:ignite:thin://my_url:my_port")
  .option("user", "my_user")
  .option("password", "my_password")
  .option("dbtable", "my_table")
  .option("mode", "overwrite")
  .save()

我一直遇到错误...对于上述错误是py4j.protocol.Py4JavaError: An error occurred while calling o48.save. :java.sql.SQLException: no PRIMARY KEY defined for CREATE TABLE at org.apache.ignite.internal.jdbc.thin.JdbcThinConnection.sendRequest(JdbcThinConnection.java:750

任何人可以帮忙吗?

我的火花版本是2.4.0,Python 2.7,Ignite 2.7

是否有原因您不使用Spark-dimente集成?JDBC 应该有效,但有更好的方法,尤其是因为您已经包括所有合适的罐子。

df.write.format("ignite")
        .option("table","my_table")
        .option("primaryKeyFields","COL1")
        .option("config",configFile)
        .option("mode","overwrite")
        .save()

还请注意包含" primaryKeyfields"选项。正如您的错误消息所指出的那样,使用JDBC的版本失败了,因为您尚未定义主键。

最新更新