我正在尝试通过JAVA代码在SAP HANA上使用火花SQL执行查询。在对数据帧对象调用任何操作时,当调用 df.count();
时,我在代码段下方得到 java.io.NotSerializableException.In,不会引发可序列化异常。
public class SaphanaTest implements Serializable {
private static final long serialVersionUID = 1L;
public void call() {
SparkConf sparkconf = new SparkConf().set("spark.master", "local[*]");
SparkContext sc = new SparkContext(sparkconf);
HiveContext sqlContext = new HiveContext(sc);
try {
Class.forName("com.sap.db.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Map<String, String> options = new HashMap<String, String>();
options.put("url",
"jdbc:sap://<IP>:30015/system");
options.put("user", "SYSTEM");
options.put("password", "Saphana123");
options.put("dbtable", "SYSTEM.TEST1");
DataFrame df = sqlContext.load("jdbc", options);
df.registerTempTable("temp");
df = sqlContext.sql("select * from temp");
long count = df.count();
sc.stop();
}
public static void main(String[] args) {
SaphanaTest test = new SaphanaTest();
test.call();
}
}
错误堆栈跟踪:
线程“main”org.apache.spark中出现异常。SparkException:位于org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:315)的org.apacher.sark.util.ClosureCleaner$.org$apache$spark$util$ClosuleCleaner$$clean(Closulecleaner.scala:305)位于org.apache.sark.rdd.rdd$$anonfun$toLocalIterator$1.org$apache$spark$rdd$rdd$$annofun$$collectPartition$1(rdd.scala:900)位于org.apacher.sark.rdd$anonfun$tolocalIteratr$1$$annfun$apply$30.apply(rdd.scala:902)位于org.apache.rdd.rdd$ananofun$1$toLocal Iterator$1$$$anon fun$apply$30.apply(rdd.scala:902)scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371)位于com.ipopure.saphana.SaphanTest.main(SaphanaTest.java:48)的scala.ccollection.convert.Wrappers$IterattorWrapper.hasNext(Wrappers.scala:29)。NotSerializableException:com.sap.db.jdbc.topology。主机序列化堆栈:-对象不可序列化(类:com.sap.db.jdbc.topology.Host,值:172.26.52.54:30015)-writeObject数据(类:java.util.ArrayList)-object(类java.util.ArrayList,[172.26.52.55:30015])-write对象数据(类java.jutil.Hashtable)-obObject(类java.util.Properties,{dburl=jdbc:sap://172.26.52.54:30015,user=SYSTEM,password=Saphana123,url=jdbc:sap://172.26.52.54:30015/?system
有什么建议吗?在google上做了研究后,我发现了一个使连接属性可序列化的建议。但是我不知道如何在spark中将它序列化。
感谢您对此的帮助。提前感谢您。
这篇博文的注释部分解决了我的问题,你也可以试试:
注意:我已经使用最新的 SPS12 版本的哈纳 JDBC 驱动程序 (ngdbc.jar) 针对 SPS10 测试了火花
我遇到了从一个火花运行的AWS EMR集群连接到另一个立即运行的AWS EMR集群的问题。 用python编写的代码是: 通过aws
我试图连接到使用火花minio提供的s3,但它是说桶迷你库不存在。( 我正在使用以下指南进行连接。 https://github.com/minio/cookbook/blob/master/docs/apache-spark-with-minio.md 这些是我在scala中使用的依赖项。 "org.apache.spark " %% "spack-core"%"2.4.0","org.apac
我正试图按照官方文档设置一个Spark独立集群。 我的主人在一个运行ubuntu的本地vm上,我也有一个工作人员在同一台机器上运行。它是连接的,我能够在大师的WebUI中看到它的地位。 以下是WebUi图像- 我已经在两台机器上的/etc/hosts中添加了主IP地址和从IP地址。我遵循了SPARK+独立集群中给出的所有解决方案:无法从另一台机器启动worker,但它们对我不起作用。 我在两台机器
我正在尝试将spark连接到pyspark中的oracle数据库,但我遇到了驱动程序错误,请任何人帮我解决这个问题。我刚接触Spark,刚刚开始学习。下面是我的代码, 下面是错误, 文件“C:/Users/Macaulay/PycharmProjects/Spark/SparkSqlOracle.py”,第8行,在OrcDb=SqlContext中。阅读格式('jdbc')\文件“C:\Hadoo
我试图使用带有Datastax Spark-Cassandra连接器的Spark查询Cassandra。火花代码是 我发现了另一个帖子,看起来类似的火花工作卡珊德拉错误,但它是一个不同的类,无法找到,所以我不确定它是否有帮助。
我有一台安装了Hadoop和Spark的机器。下面是我目前的环境。 Python3.6 /root/.ipython/profile_pyspark/startup/00-pyspark-setup.py /root/anaconda3/share/jupyter/kernels/pyspark/kernel.json kernel.json 所以,由于sc无法初始化,如果我想运行以下操作,它失败