要设置system.setproperty(“oracle.net.tns_admin”,path_of_ora)
,我尝试了以下方法。
方法1:使用broadcast变量将tns.ora文件复制到所有执行程序sparksession.sparkcontext()。broadcast(“/tmp/conf/”,classTagTest)
方法2:在spark submit命令中使用--files参数传递tns.ora文件,并设置--conf spark.executor.extrajavaoptions=-doracle.net.tns_admin=tnsnames.ora
方法3:使用sparksession.addfile(“tnsnames.ora”)集--conf spark.executor.extrajavaoptions=-doracle.net.tns_admin=tnsnames.ora
根据我们的分析,我们发现当运行spark应用程序时,系统属性被设置为master为local[*],模式为client。
即使在客户端模式下,也只能识别本地路径,而当我们尝试用hdfs路径设置systemProperty时,它无法识别。
但要求是设置系统属性并在集群模式下运行。
spark-submit--类demo1-master local[*]--deploy-mode client--驱动程序--内存5G--执行器--内存10G--执行器--核心5--num-executors 36--JAR OJDBC15-11.1.0.6.jar--文件/tmp/tnsnames.ora--conf spark.executor.extrajavaoptions=-doracle.net.tns_admin=tnsnames.ora--驱动程序-java-options-doracle.net.tns_admin=tnsnames.ora
SparkConf sparkConf = new SparkConf()
// .setMaster("local[*]")
.setAppName("Iden");
SparkSession sparkSession = SparkSession.builder()
.config(sparkConf).getOrCreate();
String username = "etldevapp";
String password = "etldevappstg";
String thinConn = "jdbc:oracle:thin:" + username + "/" + password + "@xxxxxxx";
System.setProperty("oracle.net.tns_admin","/tmp/");
try {
DriverManager.registerDriver(new OracleDriver());
Connection conn = DriverManager.getConnection(thinConn, username, password);
PreparedStatement st = conn.prepareStatement("select * from xxxx where rownum < 10");
final ResultSet rs = st.executeQuery();
System.out.println(rs.getFetchSize());
} catch (Exception e) {
System.out.println("Exception from try1 ");
}
User类引发异常:java.sql.sqlexception:Io异常:无法解析连接标识符“xxxxx”
这是我所做的。我在Spark配置文件中将它设置为一个属性,然后在代码中将它设置为一个系统属性。属性名以“spark.”开头是很重要的,所以如下所示:
System.setProperty("oracle.net.tns_admin",conf.get("spark.your.property.name"));
一直在努力解决使用Spark YARN处理多个配置文件以及在集群和客户端模式之间切换的问题。 在我的应用程序中,我需要加载两个配置文件: 应用程序配置 环境配置 示例-application.conf: env.conf: 代码: 有什么建议如何设置,以便我可以轻松地交换集群和客户端模式? 谢谢!
我有一个项目连接到独立的redis,客户端创建为: 用于绝地武士和spring data redis的库版本为: 现在我需要移动到集群redis,并将客户端创建更改为 通过此代码更改,我在群集中找不到可访问的节点,如下所示: } 由于spark-2.1.3中运行了spark应用程序,由于版本依赖性,我需要使用相同的spring data redis。如果没有jedis和spring data re
有两种部署模式可用于在YARN上启动Spark应用程序。在yarn-cluster模式下,Spark驱动程序在集群上由YARN管理的应用程序主进程中运行,客户端可以在启动应用程序后离开。在yarn-client模式下,驱动程序在客户端进程中运行,而应用程序主进程仅用于向YARN请求资源。 在此,我只能理解的区别是哪个地方的驱动程序在运行,但我无法理解哪个运行得更快。莫尔沃弗: 在运行Spark-s
问题内容: 我正在使用Spark 1.6(Cloudera 5.8.2),并尝试了以下方法来配置ORC属性。但这不会影响输出。 以下是我尝试过的代码段。 除此之外,我还尝试了在hive-site.xml和hiveContext对象中设置的这些属性。 hive –orcfiledump在输出中确认未应用配置。以下是Orcfiledump代码段。 问题答案: 您在这里犯了两个不同的错误。我不怪你 我去
我的工作是这样的: https://spark.apache.org/docs/latest/running-on-kubernetes.html 下面是驱动程序用于引导集群的代码: