gpt4 book ai didi

hadoop - 从 Apache Spark 查询外部配置单元中存在的表

转载 作者:可可西里 更新时间:2023-11-01 14:48:36 25 4
gpt4 key购买 nike

<分区>

我对 hadoop 生态系统比较陌生。我的目标是使用 Apache Spark 读取配置单元表并对其进行处理。 Hive 在 EC2 实例中运行。而 Spark 在我的本地机器上运行。

为了制作原型(prototype),我按照 here 上的步骤安装了 Apache Hadoop。 .我也添加了所需的环境变量。我已经使用 $HADOOP_HOME/sbin/start-dfs.sh

启动了 dfs

我已经按照 here 上的步骤安装了 Apache Hive .我已经启动了 hiverserver2 和 hive metadatastore。我在配置单元中配置了 apache derby db(服务器模式)。我创建了一个示例表“web_log”并使用直线在其中添加了几行。

我在 hadoop core-site.xml 中添加了以下内容

  <property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>

并添加到 hdfs-site.xml 中

<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>

我在本地 spark 实例的 $SPARK_HOME/conf 中添加了 core-site.xml、hdfs-site.xml 和 hive-site.xml

core-site.xml 和 hdfs-site.xml 是空的。即

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
</configuration>

hive-site.xml 包含以下内容

<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://ec2-instance-external-dbs-name:9083</value>
<description>URI for client to contact metastore server</description>
</property>
</configuration>

我已经启动了 spark-shell 并执行了以下命令

scala> sqlContext
res0: org.apache.spark.sql.SQLContext = org.apache.spark.sql.hive.HiveContext@57d0c779

似乎 spark 已经创建了 HiveContext。我已经使用以下命令执行了 sql

scala> val df = sqlContext.sql("select * from web_log")
df: org.apache.spark.sql.DataFrame = [viewtime: int, userid: bigint, url: string, referrer: string, ip: string]

列及其类型与我创建的示例表“web_log”相匹配。现在当我执行 scala> df.show 时,它花了一些时间并抛出以下错误

16/11/21 18:46:17 WARN BlockReaderFactory: I/O error constructing remote block reader.
org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/ec2-instance-private-ip:50010]
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:533)
at org.apache.hadoop.hdfs.DFSClient.newConnectedPeer(DFSClient.java:3101)
at org.apache.hadoop.hdfs.BlockReaderFactory.nextTcpPeer(BlockReaderFactory.java:755)

似乎 DFSClient 正在使用 EC2 实例内部 ip。据我所知,我没有在端口 50010 上启动任何应用程序。

我是否需要安装和启动任何其他应用程序?

如何确保 DFSClient 使用 EC2 实异常(exception)部 IP 或外部 DNS 名称?

是否可以从外部 spark 实例访问 hive?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com