草庐IT

元中都

全部标签

hadoop - collect_set on array type with group by 在配置单元中

我有下表,其中包含id的重复项以及每个id的值数组,我想找出每个id的唯一值,该怎么做?CREATETABLEtest(idstring,valuesarray)当我运行以下命令时,它会抛出错误,因为collect_set仅支持原始类型值。selectid,collect_set(values)fromtsgroupbyid;错误:FAILED:UDFArgumentTypeExceptionOnlyprimitivetypeargumentsareacceptedbutarraywaspassedasparameter1. 最佳答案

hadoop - 如何在配置单元中获取数组中的不同元素

我有一个表,其中有一列类型为array每行具有动态大小。示例:1[100,200]2[100,300,500,600]3[200,300]结果应该是与数组的这一列不同的值,应该是100200300500600 最佳答案 你必须使用explode(),然后申请distinct在子查询上,类似于:selectdistincta.converfrom(selectexplode(arr)asconverfromarraytype2)asa然后您可以使用collect_list将其转换回array.

hadoop - 无法更改配置单元中的分区位置

我正在尝试更改我的外部配置单元表的分区位置。我尝试运行的命令:ALTERTALBEsl_uploadsPARTITION(hivetimestamp='2016-07-2615:00:00')SETLOCATION'/data/dev/event/uploads/hivetimestamp=2016-07-2615:00:00'我得到的错误:FAILED:ExecutionError,returncode1fromorg.apache.hadoop.hive.ql.exec.DDLTask.java.net.URISyntaxException:Illegalcharacterinpa

hadoop - 在配置单元中处理换行符

我在hive中创建了一个表Createtable(idint,DescriptionString)我的数据如下所示:1|Thiswillreturncorruptdatasincethereisa','inthefirststring.sometextChangethedata2|Thereisprobinreadingdatasometext数据加载到hive后,由于默认的行结束符是\n,hive无法读取description列,因此显示为NULL值。谁能建议在加载到配置单元之前如何处理换行符。 最佳答案 我知道这个问题很老了,但

hadoop - 什么时候我们不应该在配置单元中使用分桶?

我们什么时候不应该在Hive中使用分桶?该技术的瓶颈是什么? 最佳答案 我想当您无法从中受益时,您不必使用分桶。据我所知,分桶的主要好处包括:更高效的采样和映射端连接(见下文)。因此,如果您的表很小或者您不需要快速采样和映射端连接就不要使用它,因为您需要记住您必须在插入之前对数据进行存储,手动或使用sethive。enforce.bucketing=true;没有瓶颈,它只是允许您在某些情况下利用的一种可能的数据布局。Hive映射端连接示例(seemorehere):Ifthetablesbeingjoinedarebucketiz

hadoop - 在配置单元中应用 try catch

我尝试使用SQL的try-catchblock语句,但它在配置单元中出错。我也在寻找文档,但无济于事。那么如何在配置单元脚本中应用try-catch语句block呢??我试过的语法BEGINTRY{sql_statement|statement_block}ENDTRYBEGINCATCH[{sql_statement|statement_block}]ENDCATCH[;]摘自http://msdn.microsoft.com/en-IN/library/ms175976.aspx 最佳答案 HiveQLdoesnotsuppor

hadoop - 在配置单元中删除表命令

我正在尝试删除一个表并在Hive中重新创建它。删除表后,如果我在表上运行选择查询,它会显示删除前表中的旧行。当table已经被放下时,这怎么可能?为什么即使在删除并重新创建表后它仍保留行?hive>select*fromabc;A30B40hive>droptableabc;hive>createexternaltableabc(namestring,qtyint);hive>select*fromabc;A30B40 最佳答案 问题是你正在删除外部表,所以每当我们删除这个表时,那个表的源文件仍然存在于那个路径上,所以每当我们要创建

hadoop - 在配置单元中出现错误

当我连接到ireport时,如果说在hiveshell中显示表,则会出现此错误:Errorinmetadata:java.lang.RuntimeException:Unabletoinstantiateorg.apache.hadoop.hive.metastore.HiveMetaStoreClientFAILED:ExecutionError,returncode1fromorg.apache.hadoop.hive.ql.exec.DDLTask 最佳答案 您是否已将包含元数据数据库的JDBC驱动程序的jar复制到Hive的

hadoop - 配置单元中的 percentile_approx 返回零

我一直在尝试检查一组用户的percentile_approx。这背后的意图是获取数据集中前25%的客户。因此,为了检查这一点,我运行了以下HIVE查询。selectpercentile_approx(amount,0.75)fromsales但是,此查询返回的值为0.0。我不确定是什么问题。当我对少量记录的样本运行此查询时,结果符合预期。任何人都可以阐明这一点吗?注意-我试图在包含超过330万条记录的数据集中查找百分位数。 最佳答案 selectpercentile_approx(cast(amountasdouble),ARRAY

hadoop - 如何替换配置单元中的字符?

我在配置单元表中有一个字符串列description,它可能包含制表符'\t',但是当将配置单元连接到外部时,这些字符会弄乱一些View应用。有没有一种简单的方法可以摆脱该列中的所有制表符?。我可以运行一个简单的python程序来完成它,但我想为此找到更好的解决方案。 最佳答案 regexp_replaceUDF执行我的任务。以下是apacheWiki中的定义和用法。regexp_replace(stringINITIAL_STRING,stringPATTERN,stringREPLACEMENT):这将返回替换INITIAL_S