全部
我过去两个星期一直在与PySpark和Ignite itegration斗争,而我已经不知所措了。
我一直试图上载在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
有人可以帮忙吗?
我的Spark版本是2.4.0,python 2.7,ignite 2.7
答案 0 :(得分:0)
是否有原因不使用Spark-Ignite集成? JDBC 应该工作,但是有更好的方法,特别是因为您已经包含了所有正确的JAR。
df.write.format("ignite")
.option("table","my_table")
.option("primaryKeyFields","COL1")
.option("config",configFile)
.option("mode","overwrite")
.save()
还请注意包含“ primaryKeyFields”选项。如您的错误消息所述,由于尚未定义主键,因此使用JDBC的版本将失败。