我主要使用beeline使用hive0.14。我不是管理员,但我希望创建团队可以使用的几个View。我们有一个通用的配置单元数据库,每个人都可以读写。如果我正在创建某些我不希望其他人能够删除或修改的表/View,我是否可以撤销其他人的删除/写入访问权限? 最佳答案 对Hive表的访问取决于HDFS访问权限。每当您在位于db的数据库中创建一个新表tbl时,都会创建一个新目录db/tbl。如果您想限制对该目录的写入组访问权限,请使用hadoopfs-chmod,例如:hadoopfs-chmod750db/tbl如果你想找出表在数据库中
在工作中,我们每天都会收到一个传输到Hive的新文件。该表按列“day”分区,其中包含数据传输到hive的时间,格式为“yyyy-MM-dd”。每当添加新文件时,我们都希望删除以前的分区,以便该表仅包含最新文件的数据。有没有办法编写HiveQL查询以动态删除当前日期之前的任何分区?我试过了:altertabletable_namedropifexistspartition(day但是我得到了这个错误:FAILED:ClassCastExceptionorg.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesccannotbecasttoo
谁能解释一下使用Tez执行引擎时Hive中的VERTEX_FAILURE错误是什么?还有它的根本原因是什么? 最佳答案 这个错误是因为Tez容器没有分配足够的内存来运行查询。解决方案:您必须通过调整以下参数来增加资源的内存。tez.am.resource.memory.mb=4096tez.am.java.opts=-server-Xmx3276m-Djava.net.preferIPv4Stack=true-XX:+UseNUMA-XX:+UseParallelGChive.tez.container.size=4096hive.
我是Hive的新手,我正在解决以下问题,但我无法解决。请帮助我。我有以下类型的json记录。{"issues":[{"key":"COV-2073","labels":["java","db"]}]}我想取消嵌套它或像下面那样转换它。Keylabels"COV-2073""java","db"我使用了以下类型的查询,但无法获得所需的输出。selectv2.keyfromdemo_exampleasdlateralviewjson_tuple(d.a1,'issues')v1asissuelateralviewjson_tuple(v1.issue,'key')v2askey;即使我也接
我是Hive和Hadoop框架的新手。我正在尝试编写一个配置单元查询来拆分由管道'|'分隔的列特点。然后我想将2个相邻值分组并将它们分成单独的行。例子,我有一个表idmapper1a|0.1|b|0.22c|0.2|d|0.3|e|0.63f|0.6我可以使用split(mapper,"\\|")拆分列,这会给我数组idmapper1[a,0.1,b,0.2]2[c,0.2,d,0.3,e,0.6]3[f,0.6]现在我尝试使用横向View将映射器数组拆分为单独的行,但它会分隔所有值,而我想按组分隔。预期:idmapper1[a,0.1]1[b,0.2]2[c,0.2]2[d,0.3]
我必须将数据填充到一个以时间戳为数据类型的Hive表中。引用这里的其他答案,我理解了创建一个数据类型为字符串的新表然后转换为yyyy-mm-dd的方法,因为我的格式是mm/dd/yyyy.CREATETABLEtbl_t(t_idvarchar(50),c_datetimestamp,namevarchar(25))ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t';CREATETABLEtbl_s(t_idvarchar(50),c_datestring,namevarchar(25))ROWFORMATDELIMITEDFIELDSTERMINATED
我正在尝试将数据框存储到外部配置单元表中。当我执行以下操作时:recordDF.write.option("path","hdfs://quickstart.cloudera:8020/user/cloudera/hadoop/hive/warehouse/VerizonProduct").saveAsTable("productstoreHTable")在本应存在表的hdfs位置,我得到了这个:-rw-r--r--3clouderacloudera02016-12-2518:58hadoop/hive/warehouse/VerizonProduct/_SUCCESS-rw-r--r
select*fromtable1aLEFTOUTERJOIN(select*fromtable99wherecol=1)bON(a.col1=b.col1)WHEREa.col2=b.col2ANDSIGN(a.col3)=1LEFTOUTERJOIN(select*fromtable99wherecol=2)cON(a.col1=c.col1)WHEREa.col2=c.col2ANDSIGN(a.col3)=1; 最佳答案 正确形成的SQL查询只有一个where子句(不包括CTE和子查询)。所以:select*fromtabl
我想找到具有大量用户ID的前10个标题。所以我使用了类似的查询selecttitle,count(userid)asusersfromcombined_moviedatagroupbytitleorderbyusersdesclimit10但我需要根据标题对它们进行排序,我试过这个查询selecttitle,count(userid)asusersfromcombined_moviedatagroupbytitleorderbyusersdesc,titleasclimit10但它不会对它们进行排序。仅仅返回相同的结果。如何做到这一点 最佳答案
我需要从linux路径中检索filename.txt并将文件名插入到配置单元中的表列中。是否可以仅从路径中检索文件名并使用虚拟列将其插入到配置单元表中?请指教!例如路径/home/usr/path/filename.txt并将文件名插入表中。创建表t(名称字符串);谢谢! 最佳答案 如果你想针对HDFS运行-命令-awk-F"/"'{print$NF}'你只需要文件名。[cloudera@quickstart~]$hadoopfs-ls/user/cloudera/departments|awk-F"/"'{print$NF}'|e