我正在回顾一个旧的Spark软件,它必须并行运行许多小的查询和计数(select COUNT(*)FROM t
)并使用直接的hive-sql。
在过去,该软件通过在shell(sys.process._
)上直线运行每个查询来解决“并行化查询的问题”。我不能用现代新鲜的Spark,此刻只有Spark V2.2。下面的片段说明了完整的SQL查询方法。
有一种“Spark方式”可以访问Hive并运行SQL查询,性能(略)更好,而且Spark配置的重用性更好?
没有丢失纯配置单元或与本机配置单元火花并行化的风险?
package br.com.generaldq.utils
import org.apache.log4j.Logger
object HiveUtils {
val log: Logger = Logger.getLogger(HiveUtils.getClass)
def beelineExec(hql: String, queue: String = "DataQuality"): String = {
// here the beeline call and parameters are fixed,
// no reuse of Spark configurations.
val serversHive=List("etc:2181", "etc2:2181")
log.info(hql)
val bl =
Seq("beeline", "-u", "'jdbc:hive2://etcEtc","--hiveconf","... ETC...", "-e",
"\""+hql+"\""
)
import sys.process._
var result =
try {
Process(bl).!!
} catch {
case e: Exception =>
log.error(s"Error '${e}' on executing Hive query.\nQuery: ${hql}\n")
s"Error on executing Hive query. Query: ${hql}"
}
result
}
}
您没有提到您在什么平台,但在HDP的情况下,您可以使用Spark Warehouse连接器访问Hive。我希望在仍然利用配置单元的元数据管理,甚至在表/列级别设置的安全策略的同时,能够获得良好的性能。
下面是文档:https://docs.cloudera.com/hdpdocuments/hdp3/hdp-3.1.4/integrating-hive/content/hive_hivewarehouseconnector_for_handling_apache_spark_data.html
如果您没有一个集成的平台,有时您可以通过避免使用hive并只授予对Hdfs上的仓库目录的完全访问权来获得性能,当然这可能会产生安全问题。
我用这些参数启动火花2.3.1的火花外壳: 然后创建两个带有排序和存储桶的蜂箱表 第一个表名-表1 第二个表名-table2 (表2的代码相同) 我希望当我用另一个df连接这些表时,查询计划中没有不必要的交换步骤 然后我关闭广播使用SortMergeJoin 我拿一些df 但当我在连接前对两个表使用union时 在这种情况下出现了排序和分区(步骤5) 如何在不进行排序和交换的情况下合并两个蜂窝表
我正在尝试连接到R中的hive。我已经在我的R环境中加载了RJDBC和rJava库。我使用的是一台Linux服务器,hadoop(hortonworks sandbox 2.1)和R(3.1.1)安装在同一个盒子中。这是我用来连接的脚本: 我得到了这个错误: 错误。jcall(drv@jdrv,“Ljava/sql/Connection;”,“连接”,如图所示。字符(url)[1],:java。l
我按照多个教程尝试使用RJDBC连接到Hive,但没有成功。 以下是我所拥有的: 我已经下载并放置在的文件。 我也尝试了最近的版本,但总是与相同的Cloudera版本同步。即使我的版本是5。XX。 我很确定是正确的,因为我已经使它在Python中与具有相同主机名/端口的一起工作。 错误: 错误在. jcall(drv@jdrv,"Ljava/sql/Connection;","Connection
蜂巢平台(OpenComb Platform)是一个基于 PHP 5.3 实现的深度云计算应用框架。蜂巢采用了扩展模式,系统中的功能和特性,都由扩展提供。 因此,用户可以通过开发和安装扩展来部署各种类型的互联网应用。
ApplicationMaster:用户类引发异常:org。阿帕奇。火花sql。AnalysisException:未找到表或视图:“DB\U X”。“表Y” Spark会话: 配置单元站点中的配置单元仓库目录。xml:/apps/hive/warehouse/ 此处抛出错误: 在java中: 在spark shell interactive中: 显示创建表table\u Y: Hadoop文件:
我正在执行一个HQL查询,该查询几乎没有连接、联合和插入覆盖操作,如果只运行一次,它就可以正常工作。 如果我第二次执行相同的作业,我就会面临这个问题。有人能帮我确定在哪种情况下我们会得到这个异常吗?