我遇到了从一个火花运行的AWS EMR集群连接到另一个立即运行的AWS EMR集群的问题。
用python编写的代码是:
jdbcDF = spark.read \
.format("jdbc") \
.option("driver", "com.facebook.presto.jdbc.PrestoDriver")\
.option("url", "jdbc:presto://ec2-xxxxxxxxxxxx.ap-southeast-2.compute.amazonaws.com:8889/hive/data-lake") \
.option("user", "hadoop") \
.option("dbtable", "customer") \
.load()\
通过awsemr部署,使用选项
--packages,\'org添加步骤。阿帕奇。spark:spark-streaming-kinesis-asl_2.11:2.4。0,组织。postgresql:postgresql:42.2。9,com。脸谱网。presto:presto jdbc:0.60\',\
部署时会抛出以下错误
线程“main”java中出现异常。朗。反思。组织中未声明的HrowableException。阿帕奇。hadoop。安全用户组信息。doAs(UserGroupInformation.java:1862)位于org。阿帕奇。火花部署斯巴克杜普蒂尔。runAsSparkUser(SparkHadoopUtil.scala:64)位于org。阿帕奇。火花遗嘱执行人。粗颗粒执行器后端$。在org上运行(grossGrainedExecutorBackend.scala:237)。阿帕奇。火花遗嘱执行人。粗颗粒执行器后端$。main(grossGrainedExecutorBackend.scala:330)位于org。阿帕奇。火花遗嘱执行人。粗粒化。main(grossGrainedExecutorBackend.scala)由以下原因引起:org。阿帕奇。火花SparkException:在组织的等待结果中引发异常。阿帕奇。火花util。ThreadUtils$。在org上等待结果(ThreadUtils.scala:226)。阿帕奇。火花rpc。RpcTimeout。在org上等待结果(RpcTimeout.scala:75)。阿帕奇。火花rpc。RpcEnv。组织上的setupEndpointRefByURI(RpcEnv.scala:101)。阿帕奇。火花遗嘱执行人。粗颗粒执行器后端$$anonfun$run$1。在组织上应用$mcV$sp(grossGrainedExecutorBackend.scala:250)。阿帕奇。火花部署SparkHadoopUtil$$anon$2。在org上运行(SparkHadoopUtil.scala:65)。阿帕奇。火花部署SparkHadoopUtil$$anon$2。在java上运行(SparkHadoopUtil.scala:64)。安全访问控制器。javax上的doPrivileged(本机方法)。安全auth。主题doAs(Subject.java:422)位于org。阿帕奇。hadoop。安全用户组信息。doAs(UserGroupInformation.java:1844)。。。另外4个原因是:java。木卫一。IOException:无法连接到ip xxxx xxx。ap-东南-2。计算内部/xxx xxxx:41885在组织。阿帕奇。火花网络客户运输客户工厂。在org上创建客户端(TransportClientFactory.java:245)。阿帕奇。火花网络客户运输客户工厂。在org上创建客户端(TransportClientFactory.java:187)。阿帕奇。火花rpc。内蒂。Nettyrpcev。在org上创建客户端(nettyrpcev.scala:198)。阿帕奇。火花rpc。内蒂。发件箱$$anon$1。请致电org(Outbox.scala:194)。阿帕奇。火花rpc。内蒂。发件箱$$anon$1。在java上调用(Outbox.scala:190)。util。同时发生的未来任务。在java上运行(FutureTask.java:266)。util。同时发生的线程池执行器。java上的runWorker(ThreadPoolExecutor.java:1149)。util。同时发生的线程池执行器$Worker。在java上运行(ThreadPoolExecutor.java:624)。朗。丝线。运行(Thread.java:748)由:io引起。内蒂。频道AbstractChannel$AnnotatedConnectionException:连接被拒绝:ip-XXXXXXXX。ap-东南-2。计算内部/xxxxxx:41885,太阳时。尼奥。索克坦林普尔主教。sun上的checkConnect(本机方法)。尼奥。索克坦林普尔主教。在io上完成连接(socketchannelmpl.java:717)。内蒂。频道插座尼奥。NioSocketChannel。io上的doFinishConnect(NioSocketChannel.java:323)。内蒂。频道尼奥。AbstractNioChannel$AbstractNioSafe。在io上完成finishConnect(AbstractNioChannel.java:340)。内蒂。频道尼奥。NioEventLoop。在io上处理SelectedKey(NioEventLoop.java:633)。内蒂。频道尼奥。NioEventLoop。io上的processSelectedKeysOptimized(NioEventLoop.java:580)。内蒂。频道尼奥。NioEventLoop。在io上处理SelectedKeys(NioEventLoop.java:497)。内蒂。频道尼奥。NioEventLoop。在io上运行(NioEventLoop.java:459)。内蒂。util。同时发生的SingleThreadEventExecutor$5。在io上运行(SingleThreadEventExecutor.java:858)。内蒂。util。同时发生的DefaultThreadFactory$DefaultRunnableDecorator。运行(DefaultThreadFactory.java:138)。。。还有一个原因是:java。网ConnectException:连接被拒绝。。。11更多日志类型的末尾:stderr
虽然我已经编辑了上面的IP地址(安全第一),但它与spark slave实例上的内部IP地址相同。它似乎正在连接到自身,并且存在连接问题。
我已经打开了AWS EC2安全组中的端口,允许spark master/slave访问presto实例。
如果有帮助,编写一个快速的节点脚本来测试连接
var client = new presto.Client({
host: prestoEndpoint,
user: 'hadoop',
port: 8889,
});
client.execute({
query: 'select * from customer',
catalog: 'hive',
schema: 'data-lake',
source: 'nodejs-client',
state: function(error, query_id, stats) {
console.log({ message: 'status changed', id: query_id, stats: stats });
},
columns: function(error, data) {
console.log({ resultColumns: data });
},
data: function(error, data, columns, stats) {
console.log({data, columns});
},
success: function(error, stats) {
console.log(error);
console.log(JSON.stringify(stats, null,2));
},
error: function(error) {
console.log(error);
},
});
错误信息的关键部分似乎是
原因:io。内蒂。频道AbstractChannel$AnnotatedConnectionException:连接被拒绝:ip-XXXXXXXX。ap-东南-2。计算内部/xxxxxx:41885
问题是prest jdbc驱动程序的版本号
我从com更新了它。脸谱网。presto:presto jdbc:0.60
tocom。脸谱网。presto:presto jdbc:0.225
所以完整的包参数是
--packages,\'org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.0,org.postgresql:postgresql:42.2.9,com.facebook.presto:presto-jdbc:0.255\',\
感谢@Lamanus发现了这一点
我已经做了所有的尝试,但都不起作用,这是我的问题,我试图将一些文件从一台机器发送到另一台机器,想法是在目标机器上创建一个servlet,在服务器上运行它,并等待任何客户机连接,客户机和servlet代码在lan网络类型中完美地工作,但当涉及到wan网络类型时,我得到了这个例外 线程“main”org.apache.http.conn.HTTPhostConnectException:连接到192.
Selenium Webdriver(2.53)使用testNG和java(jdk 8)。Mozilla Firefox(46)在页面打开时立即崩溃,并显示错误消息: org.apache.http.conn.连接到127.0.0.1:7055[/127.0.0.1]失败:连接拒绝:连接
null 我得到这个错误 Redis连接到127.0.0.1:6379失败-连接econn拒绝127.0.0.1:6379
问题内容: 我想在PC和带WiFi的手机之间传输一些数据。 这是我获取WiFi IP地址的方法: 这是有关向PC发送消息的代码: 但是发生错误 java.net.ConnectException:无法连接到/192.168.253.3(端口2468):连接失败:ECONNREFUSED(连接被拒绝) 此外,我使用Android手机来运行该应用程序。 问题答案: 一个最有可能的手段,没有什么侦听该端
我想连接Java类文件与SQL server 2012。我已通过SQL server身份验证登录。但我接收到连接错误。 错误:到主机127.0.0.1端口1433的TCP/IP连接失败。错误:“连接拒绝:连接。验证连接属性。确保主机上正在运行SQL Server实例并接受端口上的TCP/IP连接。确保到端口的TCP连接没有被防火墙阻止。” 我的代码---