当前位置: 首页 > 知识库问答 >
问题:

从使用Spark连接Hive表读取记录

谷涵容
2023-03-14

我们可以使用以下命令轻松地从 Spark 中的 Hive 表中读取记录:

Row[] results = sqlContext.sql("FROM my_table SELECT col1, col2").collect();

但是当我连接两个表时,例如:

select t1.col1, t1.col2 from table1 t1 join table2 t2 on t1.id = t2.id

如何从上面的连接查询中检索记录?

共有1个答案

燕正卿
2023-03-14

SparkContext.sql方法始终返回数据帧,因此 JOIN 与任何其他类型的查询之间没有实际区别。

但是,您不应该使用收集方法,除非将数据获取到驱动程序确实是期望的结果。如果数据无法放入驱动程序内存,它会很昂贵并且会崩溃。

 类似资料:
  • 我有一个140亿记录的Hive表(大约1TB大小)和另一个8亿记录的Hive表(2GB大)。我想加入它们,我的策略应该是什么?我有一个36节点集群。我使用50个执行器,每个执行器30 GB。 据我所知,我的选择是: 广播2 GB表 只是盲目地连接2个表(我已经这样做了,需要将近4个小时才能完成) 如果我将两个表重新分区并连接起来,会提高性能吗?我观察到在第二种方法中,最后20个任务非常慢,我希望它

  • 我想通过配置单元jdbc连接将整个配置单元表加载到spark内存中。并且已经添加了配置单元站点。xml,hdfs站点。xml在我的项目中。spark已连接配置单元,因为已成功获取列名(例如role_id)。但是spark似乎将列名作为数据加载,并抛出异常。这是我的密码: 和获取错误: JAVAlang.NumberFormatException:对于输入字符串:“t_leave_map_base.

  • 请有人能帮我摆脱这个问题。 以下错误:java.lang.IllegalArgumentException:''在“schema_name”.“table_name”表中不存在。“table_name”表在io.pivotal.greenplum.spark.greenplumRelationProvider.createrelation(GreenplumRelationProvider.sca

  • 问题内容: 我已经在带有Elasticsearch-Spark连接器的火花壳中进行了一些实验。调用火花: 在scala shell中: 它运作良好,结果包含myquery中指定的良好记录。唯一的事情是,即使我在查询中指定了这些字段的子集,我也获得了所有字段。例: 返回所有字段,不仅返回a和b(顺便说一句,我注意到大小参数都不考虑在内:result包含10条以上的记录)。也许添加字段是嵌套的很重要,

  • 问题内容: 我正在尝试从Java连接到Hive服务器1。很久以前我在这个论坛上发现了一个问题,但这对我不起作用。我正在使用此代码: 这就是指南中显示的代码。我已经在.java的同一路径中复制了hive- metastore,service,jdbc,exec,core和更多.jar。当我编译它时,我得到以下消息: 有人知道这里发生了什么吗? 问题答案: 尝试 代替 希望您在代码中添加了语句

  • 我正在尝试从db中选择*。abc在蜂箱中,这个蜂箱表是使用spark加载的 它不工作显示错误: 错误:java。伊奥。IOException:java。lang.IllegalArgumentException:bucketId超出范围:-1(状态=,代码=0) 当我使用以下属性时,我能够查询配置单元: 现在,当我尝试读取相同的hive表db.abc使用火花,我收到的错误如下: 客户端只有在具有以