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的版本失败了,因为您尚未定义主键。