如何从spark连接到远程hive服务器[重复]

2023-12-15

我在本地运行 Spark,想要访问位于远程 Hadoop 集群中的 Hive 表。

我可以通过在 SPARK_HOME 下启动 beeline 来访问配置单元表

[ml@master spark-2.0.0]$./bin/beeline 
Beeline version 1.2.1.spark2 by Apache Hive
beeline> !connect jdbc:hive2://remote_hive:10000
Connecting to jdbc:hive2://remote_hive:10000
Enter username for jdbc:hive2://remote_hive:10000: root
Enter password for jdbc:hive2://remote_hive:10000: ******
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/ml/spark/spark-2.0.0/jars/slf4j-log4j12-1.7.16.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
16/10/12 19:06:39 INFO jdbc.Utils: Supplied authorities: remote_hive:10000
16/10/12 19:06:39 INFO jdbc.Utils: Resolved authority: remote_hive:10000
16/10/12 19:06:39 INFO jdbc.HiveConnection: Will try to open client transport with JDBC Uri: jdbc:hive2://remote_hive:10000
Connected to: Apache Hive (version 1.2.1000.2.4.2.0-258)
Driver: Hive JDBC (version 1.2.1.spark2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://remote_hive:10000>

如何从 Spark 以编程方式访问远程配置单元表?


不需要 JDBC

Spark 直接连接到 Hive 元存储,而不是通过 HiveServer2。要配置此功能,

  1. Put hive-site.xml在你的classpath,并指定hive.metastore.uri到您的 Hive 元存储托管的位置。另请参阅如何在 SparkSQL 中以编程方式连接到 Hive 元存储?

  2. Import org.apache.spark.sql.hive.HiveContext,因为它可以对 Hive 表执行 SQL 查询。

  3. Define val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

  4. Verify sqlContext.sql("show tables")看看是否有效

Hive 表上的 SparkSQL

结论:如果你必须采用jdbc方式

看一看远程连接 apache Spark 和 apache hive。

请注意,beeline 也通过 jdbc 连接。从你的日志来看,这一点很明显。

[ml@master Spark-2.0.0]$./bin/beeline Beeline 版本 1.2.1.spark2 by Apache Hive beeline> !connect jdbc:hive2://remote_hive:10000

连接到 jdbc:hive2://remote_hive:10000

所以请看一下这个有趣的文章

  • 方法一:使用 JDBC 将表拉入 Spark
  • 方法 2:将 Spark JdbcRDD 与 HiveServer2 JDBC 驱动程序结合使用
  • 方法三:在客户端获取数据集,然后手动创建RDD

目前HiveServer2驱动不允许我们使用“Sparkling”方法1和2,我们只能依赖方法3

下面是示例代码片段,通过它可以实现

通过 HiveServer2 JDBC 连接将数据从一个 Hadoop 集群(也称为“远程”)加载到另一个集群(我的 Spark 所在的位置,又称为“本地”)。

import java.sql.Timestamp
import scala.collection.mutable.MutableList

case class StatsRec (
  first_name: String,
  last_name: String,
  action_dtm: Timestamp,
  size: Long,
  size_p: Long,
  size_d: Long
)

val conn: Connection = DriverManager.getConnection(url, user, password)
val res: ResultSet = conn.createStatement
                   .executeQuery("SELECT * FROM stats_201512301914")
val fetchedRes = MutableList[StatsRec]()
while(res.next()) {
  var rec = StatsRec(res.getString("first_name"), 
     res.getString("last_name"), 
     Timestamp.valueOf(res.getString("action_dtm")), 
     res.getLong("size"), 
     res.getLong("size_p"), 
     res.getLong("size_d"))
  fetchedRes += rec
}
conn.close()
val rddStatsDelta = sc.parallelize(fetchedRes)
rddStatsDelta.cache()




 // Basically we are done. To check loaded data:

println(rddStatsDelta.count)
rddStatsDelta.collect.take(10).foreach(println)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从spark连接到远程hive服务器[重复] 的相关文章

随机推荐

  • 如何检测 php 中被阻止的地址

    所以这是我的问题 我们正在尝试在我们的网站上设置 facebook like 和 twitter 推文按钮 但当 facebook 和 twitter 在计算机上被阻止时 它会导致浏览器变得无响应 所以我想做的是检测 Facebook 或
  • 适用于 Android、iOS 和 Flash 的 WebSocket 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有人可以提供一个在 Android iOS iPhone iPad 和 Flash 不是 Flex 中实现 WebSocket 的示例吗 我找到了一
  • 用于使用已知模式解析字符串中的值的 sscanf 的 Java 等效项是什么?

    所以我有 C 背景 最初是 C 语言 尽管我已经有近 5 年没有使用过该语言了 我正在尝试从 Java 中的字符串中解析一些值 在 C 中我会使用 sscanf 在Java中 人们告诉我 使用Scanner或StringTokenizer
  • git:为什么我可以签出我删除的提交?

    我有一个包含三个提交的分支 mybranch a gt b gt c 我将其推送到远程仓库 然后我决定我不想保留提交b and c 所以按照描述删除它们here git reset hard HEAD 1 git reset hard HE
  • Python:“import X as X”(其中 X 相同)有什么意义?

    In aiohttp我发现很多说法import X as X 为什么要这样做 文件的链接 我不知道答案 但链接源文件的历史记录透露了它 构造from SOMEWHERE import X as X 与相同的X 需要消除警告mypy stri
  • 如何将我的“分离头”提交返回到主服务器[重复]

    这个问题在这里已经有答案了 看起来几天前我创建了一个名为detached HEAD并一直致力于此 我的正常流程是承诺master然后将其推至origin 但我无法推动detached HEAD 我的下一站搞砸了我 我选择了git check
  • 在 WPF 中限制“Auto”和“1*”的行高

    我有一个 WPF 应用程序 其布局由顶层的 3 行组成Grid 我希望中间行用完它需要的空间 它需要的最大空间是有限的 但取决于窗口的宽度 底行应用完剩余空间 棘手的部分是顶行 它的大小可能会根据切换大部分内容的可见性的按钮而变化 我希望它
  • 在添加包含第一个对象的对象时,如何防止 EF 插入数据库中已存在的对象?

    这是不言自明的 我有一个包含另一个类的类 我们称它们为主题和课堂 public class Subject public Classroom Class get set 我使用的是无状态外观 这意味着我的 DbContext 在恢复对象后立
  • SED:匹配同一行上的 2 个模式

    您好 我想使用 sed 删除一行 如果它与同一行中的 2 个正则表达式匹配 EG 该行以 开头 以 结尾 注释 下面的脚本将完成大部分工作 sed e d e d 文件名 该脚本将删除所有以 开头并以 结尾的行 我希望它仅在满足两个条件而不
  • 当应用程序位于前台时如何处理 Firebase 通知

    我已将 Firebase Cloud Messaging 与我的应用程序集成 当我从 Firebase 控制台发送通知时 如果应用程序处于后台或未打开 我会成功收到通知 否则 如果应用程序位于前台或打开 我没有收到它 感谢所有建议 当应用程
  • C 中数组初始化中的方括号是什么意思?

    static uint8 t togglecode 256 0x3A CAPSLOCK 0x45 NUMLOCK 0x46 SCROLLLOCK 是什么意思 0x3A 这里 我只学到了像这样的陈述int a 2 1 2 这意味着初始化n 数
  • 模拟器上的越狱应用程序?

    我正在 Xcode 上为越狱的 iPhone 开发应用程序 我使用的是 Xcode 4 2 我的 iPhone 操作系统是 iOS6 我无法将我的iPhone与XCode连接进行测试 因为XCode 4 2不支持iOS6 每次当我编译代码并
  • 在 Python 中使用空格有什么陷阱吗?

    目前 我在 Python 中从未遇到过空格问题 尽管我只在两个项目中使用过它 而且我是唯一的程序员 对于学习 Python 的人来说 Python 中的空格和缩进有哪些潜在的陷阱 在某些编辑器中 一行用空格缩进 而下一行用制表符缩进 这可能
  • 如何根据动态字段对 solr 结果进行排序

    我需要根据动态字段对结果进行排序 我怎样才能做到这一点 当我对其中一些动态属性的最小值进行排序时 它没有给出正确的结果 因为我的查询就像 sort min A 160018 A chandigarh1 一些文档同时具有这两个字段A 1600
  • python 从 tsv 文件链接一个列表

    我有这个 tsv 文件 其中包含一些链接路径 每个链接由 分隔我想用 在下面的示例中 我们可以看到文件中的文本是分开的 我只想通读最后一列 这是一条以 14th 开头的路径 6a3701d319fc3754 1297740409 166 1
  • 如何从 PHP 文本中删除空行?

    我需要在 PHP 中删除空白行 带有空格或绝对空白 我使用这个正则表达式 但它不起作用 str ereg replace t r n str str preg replace t r n str 我想要的结果是 blahblah blahb
  • 如何在 Android 4.2 中以编程方式卸载 USB 驱动器

    我读过很多关于这个主题的文章 但我还没有找到解决方案 在我的应用程序中 我需要在将文件从 USB 驱动器复制到平板电脑后卸载 USB 驱动器 这样我就可以安全地删除它 而无需使用 设置 菜单 现在我正在使用这个方法 Utility copy
  • 如何通过ARC确保IOS 5中单例的销毁?

    比如说 我想创建一个里面有一些数据的单例 正如在单例中所期望的那样 数据仅动态分配一次 但我现在想知道何时以及如何发布这些数据 我应该建立特殊的方法来破坏单例吗 更具体地说 何时执行该单例的 dealloc 方法 谁对此负责 您可以声明显式
  • 尝试通过php执行python命令但权限错误

    我上传了一个图像文件并将其从临时文件夹复制到 var www 内的文件夹 然后 尝试通过 php 执行 python 命令 其中exec 命令采用以下格式 exec python file py FILES file name 即使执行以下
  • 如何从spark连接到远程hive服务器[重复]

    这个问题在这里已经有答案了 我在本地运行 Spark 想要访问位于远程 Hadoop 集群中的 Hive 表 我可以通过在 SPARK HOME 下启动 beeline 来访问配置单元表 ml master spark 2 0 0 bin