草庐IT

hadoop - 带参数的 Hive UDF

我想编写一个可以接受常量参数的自定义UDF(UDAF/UDTF)。比如我要写一个函数MAX(COL,i),其中COL是求最大值的集合,i是位置(即i=1,求最大值,i=2,找到第二高等),使得Hive查询看起来像:SELECTMAX(value,2)FROMtable;这不仅适用于MAX,所以我需要一种能够执行此操作的通用方法,因此无法从已排序的集合中进行排序和选择。 最佳答案 您可以使用ConstantObjectInspectors获取作为参数传递的常量值。在GenericUDF的initialize()方法或GenericUD

hadoop - Hive 中的范围分区

Hive是否支持范围分区?我的意思是hive是否支持如下内容:insertoverwritetabletable2PARTITION(employeeIdBETWEEN2001and3000)selectemployeeNameFROMemp10whereemployeeIdBETWEEN2001and3000;其中table2和emp10有两列:员工姓名&员工编号当我运行上面的查询时,我遇到了一个错误:FAILED:ParseExceptionline1:56mismatchedinput'BETWEEN'expecting)near'employeeId'indestination

【Hive】——DQL

1SELECT1.1语法从哪里查询取决于FROM关键字后面的table_reference。可以是普通物理表、视图、join结果或子查询结果。[WITHCommonTableExpression(,CommonTableExpression)*]SELECT[ALL|DISTINCT]select_expr,select_expr,...FROMtable_reference[WHEREwhere_condition][GROUPBYcol_list][ORDERBYcol_list][CLUSTERBYcol_list|[DISTRIBUTEBYcol_list][SORTBYcol_lis

hadoop - 在 Hive 表中插入覆盖分区 - 值重复

我创建了一个包含非分区表的Hive表,并使用选择查询将数据插入到分区Hive表中。Referedsite通过上面的链接,我的分区表包含重复值。以下是设置这是我的示例员工数据集:link1我尝试了以下查询:link2但是在更新Hive表中的值之后,将EmployeeID为19的Steven的薪水更新为50000。INSERTOVERWRITETABLEUnm_Parti_TrailPARTITION(Department='A')SELECTemployeeid,firstname,designation,CASEWHENemployeeid=19THEN50000ELSEsalaryE

arrays - 将数据加载到 Hive 数组列

我有两个Hive表及其列,如下所示Tbl_CustomerIdNameTbl_CntctIdPhone一个Id可以有多个电话号码所以我有一张表Tbl_AllIdNamePhn_ListARRAY我的问题是如何将数据从Tbl_Custome和Tbl_Cntct加载到Tbl_All。我可以在PIG中执行此操作,但想在Hive中执行同样的操作。谢谢 最佳答案 InsertoverwritetableTbl_Allselectcus.id,cus.name,collect_set(ctc.phone)fromTbl_Customercusj

hadoop - Hive中如何使用DistCp直接将数据转表?

我正在使用DistCp将数据从集群1复制到集群2。我成功地将表数据从集群1复制到集群2。但是,使用hdfs,数据已发送到文件浏览器。是否有任何直接的方法可以通过使用DistCp命令将此hdfs数据转换为Hive表(包括数据类型、分隔符等)?我当然可以查询它以从hdfs收集数据,但是我必须将它们一个接一个地转换。试图寻找有效的方法。谢谢!示例:hadoopdistcphdfs://nn1:8020/source/ahdfs://nn1:8020/source/bhdfs://nn2:8020/destination 最佳答案 还没有找

java - 使用 Java API 从 Hive 中获取表属性

我正在尝试使用Java中的Metastore客户端从HiveMetastore中获取表属性,如表数据库、名称、所有者和hdfs位置。我想我可以得到表数据库和名称,但我不知道如何获取所有者和hdfs位置之类的东西。可能吗?我已经在文档和互联网上搜索了几个小时,但一无所获。 最佳答案 可能是这样的:org.apache.hadoop.hive.metastore.api.Tabletable=..........;org.apache.hadoop.hive.metastore.api.StorageDescriptorsd=table

hadoop - $SPARK_HOME 中包含的 hive-site.xml 是什么样的?

我是hive的初学者,当我启动spark作业并从hive读取数据时发生了一些事情(找不到表)。我没有在$SPARK_HOME/conf中设置hive-site.xml吗?提交spark作业命令在这里bin/spark-submit--masterlocal[*]--driver-memory8g--executor-memory8g--classcom.ctrip.ml.client.Client/root/GitLab/di-ml-tool/target/di-ml-tool-1.0-SNAPSHOT.jar 最佳答案 在您的Hi

hadoop - 使用 Apache Drill Embedded 连接到 EMR 上的 Hive

我正在尝试以嵌入式模式在ApacheDrill1.4上进行实验,并尝试连接到在EMR上运行的Hive-Drill在EMR外部的服务器上运行。我有一些基本问题需要澄清,还有一些配置问题需要修复。这是我目前所拥有的-运行AWSEMR集群。运行DrillEmbedded服务器。根据有关为Hive配置存储插件的文档,https://drill.apache.org/docs/hive-storage-plugin/,我对是否使用RemoteMetastore或EmbeddedMetastore感到困惑。有什么区别?接下来,我的EMR集群正在运行,这里是hive-site.xml的样子-hive

java - Hive:如何计算时差

我的需求很简单,如何计算hive中两列之间的时间差示例Time_Start:10:15:00Time_End:11:45:00Ineedtodo(Time_End-Time_Start)=1:30:00注意这两列都是字符串数据类型,请帮助获得所需的结果.. 最佳答案 Languagemanual包含所有可用日期时间函数的描述。秒差可以这样计算:hour(time_end)*3600+minute(time_end)*60+second(time_end)-hour(time_start)*3600-minute(time_start