请建议一些可以在Hive-Hadoop上使用的可视化工具. 唯一的是,它应该接受 hive . 解决方案 这取决于您想到的数据分析和可视化类型. 如果您打算使用专有工具,则 tableau 是许多其他 options . 如果您喜欢开源工具(免费和多平台),则应考虑使用: hue beeswax hbase-hbase pig Google图表 colorbrewer r qt/qml octave opentgl Hive不会阻止您使用任何这些工具进行数据可视化,只要您知道如何操纵数据以及如何与各自的损失进行分析/可视化数据. 其他解决方案 查看新生的Zeppelin项目( http://zeppelin-project.org ) P> 其他解决方案 您可以使用Elasticsearch的Kibana(我更喜欢V3).那就是; 在使用Elasticsearch的Hive中创建一个外部表.就像在以下内容中一样:将您的
以下是关于 hive 的编程技术问答
需要旋转矩阵以进行时间表插值/间隙填充,并希望避免使用混乱且效率低下的联合所有方法.是否有类似Hive的横向视图爆炸功能? 中可用的 编辑: @marcothesane-感谢您的有趣场景 - 我喜欢您的插值方法.我将更多地玩它,看看它的发展.看起来很有希望. fyi-这是我想到的解决方案 - 我的情况是,我试图通过查询(以及用户/资源池等)来查看内存使用量.基本上是试图获得成本度量).我需要进行插值,以便可以在任何时间点看到总用途.因此,这是我的查询,将时间表切成秒,然后汇总以将" megabyte_seconds"的指标划分. with qry_cte as ( select session_id , request_id , date_trunc('second',start_timestamp) as dat_str , timestampadd('ss' , ceiling(request_duration_ms/1000)::int , dat
这是我的蜂巢查询: set s=date_add(from_unixtime(UNIX_TIMESTAMP()),-200); select * from a where dateString>=${hiveconf:s} 运行非常缓慢.由于某种原因,这要快得多: select * from a where dateString>='2015-01-01' 因此,具有相同日期值的第一个值要慢得多.为什么是这样?有什么想法吗? 解决方案 指定这样的分区时,不会发生动态分区修剪(除非使用Hive> = 0.14).当在Where子句中指定精确值时,Hive知道要扫描哪些分区.从配置变量指定或从另一个查询的结果指定时,Hive不知道要扫描哪些分区. 我建议使用Hive> = 0.14或通过用Shell脚本代替变量而不是Hive Conf. 来指定分区的确切值.
背景: 作为现代化工作的一部分,我试图将大型存储过程转换为HiveQL脚本. HiveQL脚本作为Hive活动的一部分,每当从Azure Data Factory触发管道时,都会在Azure Hdinsight群集上运行. 我试图转换的存储过程使用"声明"语句声明了许多变量.例如: DECLARE @Variable1 INT; 这些变量中的 值是使用SELECT语句设置的.例如: SELECT @Variable1 = ColumnName1 FROM Table_Name; ,这些变量在整个存储过程中被引用: SELECT * FROM Some_Table where ColumeName
我试图将日期存储到Hive变量中,但以后无法使用. hive> select to_date(date_sub(last_day(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')),1)); OK 2019-07-30 set my_date=select to_date(date_sub(last_day(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')),1)); 现在我想从my_date中提取年和一个月,但它行不通. hive> select date_format('${hiveconf:my_date}','yyyy-MM'); FAILED: ParseException line 1:85 missing ) at 'yyyy' near 'yyyy' line 1:89 missing EOF at '-' near 'yyyy' 以下语句正在工作: hive> s
我有一个查询我想存储在变量中的结果 我该怎么做 ? 我尝试了 ./hive -e "use telecom;insert overwrite local directory '/tmp/result' select avg(a) from abc;" ./hive --hiveconf MY_VAR =`cat /tmp/result/000000_0`; 我能够在my_var中获得平均价值 是否有一种方法可以访问Hive CLI中的UNIX命令? 解决方案 用例:在mysql中有效: set @max_date:= soled some_table; select max(date) 从some_other_table中选择 *日期> @max_date; 这对于需要重复调用此变量的脚本非常有用,因为您只需要执行一次最大日期查询,而不是每次调用变量时. Hive当前不支持这一点.(如果我错了,请纠正我!我一直在试图整个下午整个下午都能做到这
我想将当前日期作为YYMMDD获取,然后将其设置为变量以将其用作表名. 这是我的代码: set dates= date +%Y-%m-%d; CREATE EXTERNAL TABLE IF NOT EXISTS dates( id STRING, region STRING, city STRING) 但是这种方法不起作用,因为作业似乎是错误的.有什么想法吗? 解决方案 Hive不会计算变量,它像您一样替换它们,在您的情况下,它将正是此字符串'date +%Y-%m-%d'.另外,不可能在DDL中使用current_date()的UDF. 解决方案是计算外壳中的变量并将其传递给蜂巢: 在外壳中 dates=$(date +%Y_%m_%d); hive --hivevar date="$dates" -f myscript.hql 在脚本中: use mydb; create table if not ex
在Hive中,我想从表中动态提取信息,将其保存在变量中,然后进一步使用.考虑以下示例,其中我检索了Var列的最大值,并希望将其用作后续查询中的条件. set maximo=select max(var) from table; select * from table where var=${hiveconf:maximo} 它行不通,尽管 set maximo=select max(var) from table; ${hiveconf:maximo} 向我展示了预期的结果. 做: select '${hiveconf:maximo}' 给出 "select max(var) from table" 虽然. 最佳 解决方案 Hive替换变量,并且不会执行它们.使用Shell包装器脚本将结果输入变量并将其传递到您的Hive脚本. maximo=$(hive -e "set hive.cli.print.hea
用于在我们的Hive数据仓库中实现替代键,我缩小了2个选项: 1)反射('java.util.uuid','randomuuid') 2)input__file__name + block__offset__inside__file 以上哪个是一个更好的选择? 或您建议一个更好的一个? 谢谢. 解决方案 对于ORC和序列文件BLOCK__OFFSET__INSIDE__FILE不是每个文件唯一的,官方文档表示它是 当前块的第一个字节的文件偏移 在 Internet中的一些资源/a>据说block__offset__ inside__file在文本文件中是唯一的.即使这是真的,为什么您应该将自己仅限于文本文件. 也不依赖输入文件,可以在某个转换后,在工作流程读取kaffka主题,根本没有文件等之后计算,等等. 在某些其他系统中生成的UUID在您的系统中也是独特的,因为UUID在全球范围内是独一无二的. 同样,UUID的长度相同,不依赖于文件目录结
hi实际上,问题如下:我想在蜂巢表中插入的数据具有拉丁单词,并且它以UTF-8编码格式为单词.但是仍然无法正确显示蜂巢. 实际数据: - 插入Hive 的数据 我将表的编码更改为UTF-8,下面仍然相同的问题是Hive DDL和命令 CREATE TABLE IF NOT EXISTS test6 ( CONTACT_RECORD_ID string, ACCOUNT string, CUST string, NUMBER string, NUMBER1 string, NUMBER2 string, NUMBER3 string, NUMBER4 string, NUMBER5 string, NUMBER6 string, NUMBER7 string, LIST string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'; ALTER
我在互联网上搜索了很多,但找不到答案.这是我的问题: 我正在蜂巢中写一些查询.我有一个UTC时间戳,想将其更改为UTC时间,例如,给定时间戳1349049600,我想将其转换为UTC时间,即2012-10-01-01 00:00:00.但是,如果我在Hive中使用内置功能from_unixtime(1349049600),我将获得本地PDT时间2012-09-30 17:00:00. 我意识到有一个名为from_utc_timestamp(timestamp, string timezone)的内置函数.然后我尝试了from_utc_timestamp(1349049600, "GMT"),输出为1970-01-16 06:44:09.6,这是完全不正确的. 我不想因为还有其他用户而永久更改Hive的时区.因此,有什么办法可以从1349049600到" 2012-10-01 00:00:00"获得UTC时间戳字符串?非常感谢! 据我所知, 解决方案 需要一个日期字
在我们的生产环境中,我们有多hiveserver2用于高可用性.用户通过运行 创建允许的UDF beeline -u "jdbc:hive2//hs1.name.com" add jar create function myfunc as 'com.test.udf.UDF_CLASS' using jar 'hdfs://ns:8020/path/udf.jar' 用户连接到hs1.name.com还可以,但是当使用Beeline连接另一个Hiveserver2时,用户获取函数错误,例如 beeline -u "jdbc:hive2//hs2.name.com" select myfunc(id) from table1 错误消息是 错误:编译时错误:失败:smanticexception [错误10011]:第1:7无效函数'myfunc'(state = 42000,代码= 100
是否有猪UDF可以计算博客中的时间差? 假设我的网络日志以下格式: 10.171.100.10 - - [12/Jan/2012:14:39:46 +0530] "GET /amazon/navigator/index.php HTTP/1.1" 200 402 "someurl/page1" "Mozilla/4.0 ( compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 3.0.4506 .2152; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 2.0.50727)" 10.171.100.10 - - [12/Jan/2012:14:41:47 +0530] "GET /amazon/header.php HTTP/1.1 " 200 4376 "someurl/page2" "Mozilla/4.0 (compatible; MSIE
我在Java中有两个蜂巢UDF 在蜂巢中完全很好. 两个功能彼此互补. String myUDF(BigInt) BigInt myUDFReverso(String) myUDF("myInput")给出一些输出 当myUDFReverso(myUDF("myInput")) 应该还给myInput 这在Hive中起作用,但是当我尝试使用时 它在Impala(版本1.2.4)中提供了预期 myUDF(BigInt)的答案(打印的答案正确) 但是传递给myUDFReverso(String)时的答案不给 返回原始答案). 我注意到Impala 1.2.4中的length(myUDF("myInput")) 是错的.每行是+1.然后再次 如果是蜂巢和黑斑羚(版本2.1) ,这是正确的 所以,我认为附加了一些额外的(特殊)角色 在Impala 1.2.4中的myUDF输出结束时(正好在末尾 Text数据类型从UDF函数返回). 我在CPP中为Impala
我正在尝试为Hadoop Hive编写一个UDF,以解析用户代理.以下代码在我的本地机器上正常工作,但是在Hadoop上,我得到了: org.apache.hadoop.hive.ql.metadata.hiveException:无法执行方法public java.lang.string myudf .evaluate(java.lang.string)throws org.apache.hadoop.hadoop.hadoop.hive.hive.ql.metadata. hiveException on object myudf@64ca8bfb类Myudf的64ca8bfb,带有参数{所有职业:java.lang.string} size 1', 的java.lang.string} 代码: import java.io.IOException; import org.apache.hadoop.hive.ql.exec.UDF; import org.apach
我正在尝试编写一个通用函数,以在每个记录的数组中收集所有特定的结构字段,并在数组中返回它们. 我写了genericudf(如下),它似乎有效,但是: 1)当我在外部表上执行此操作时,它在托管表上可以正常工作,任何想法吗? 2)我很难为此编写测试.我已经附上了我到目前为止的测试,但它不起作用, 始终无法将'java.util.arraylist施加到org.apache.hadoop.hive.hive.serde2.ObjectInspector.ObjectInSpector'或不能将字符串施放为lazyString', 我的问题是如何为评估方法提供结构列表? 任何帮助将不胜感激. 表: CREATE EXTERNAL TABLE FOO ( TS string, customerId string, products array > ) PARTITIO
我正在尝试使用Hive将电话号码与一个区域匹配. 我有一个表(预示例),该表将一个数字前缀(前缀)映射到区域(区域)和另一个表(用户),并带有电话号码列表(NB). 每个电话号码只有1个匹配项(无子区域) 问题在于,前缀的长度未固定,因此我不能在Join's On()条件中使用UDF函数substr(NB,"前缀的长度"),以匹配一个数字的子字符串与前缀. 当我尝试使用instr()查找数字是否具有匹配前缀时: SELECT users.nb,prefix.area FROM users LEFT OUTER JOIN prefix ON (instr(prefmap.prefix,users.nb)=1) 我在line4上遇到了一个错误,"在JOIN'1'中遇到的左右别名) 我该如何工作? 我正在使用蜂巢0.9 感谢您的建议. 解决方案 可能不是最好的解决方案,但至少它可以完成工作: 使用在哪里定义匹配条件而不是on()(现在被迫true) s
我想知道如何阅读使用UDF中ADD FILE添加的蜂巢资源? 例如 Hive > add file /users/temp/key.jks 是否可以在Java中的UDF中读取此文件? 在UDF中获取此文件的路是什么? 谢谢 大卫 解决方案 使用ADD命令将资源添加到会话中后,Hive查询可以通过其名称(在MAP/RELAD/RELADE/TRONSLUSTER条款中)参考它,并且该资源可在整个执行时本地获得hadoop群集. Hive使用Hadoop的分布式缓存将添加的资源分配给查询执行时间的群集中的所有计算机.请参阅此处: hive中有in_file(string str, string filename)函数 - 如果字符串str在文件名中显示为整行,则返回true.您可以将IN_FILE源代码用作示例: genericudfinfile.java 来自源代码的几种方法: private BufferedReader getReaderFor(
我使用GZSOMED JSON编码文件在Amazon的Elastic MapReduce上创建了一个蜂巢表.我正在使用此JSON SERDE: http://code.google.com/p/hive -json-serde/ 未编码的文件看起来像这样: {"id":"101", "items":"A:231,234,119,12"} {"id":"102", "items":"B:13,89,121"} ... 我想为用户使用表生成功能创建一个"项目"列的数组.我想要的阵列将是忽略":"的"爆炸" CSV,及其之前的字母.我希望能够按Intem ints(231,234等)进行分组或与其他表相机.更改该文件的格式将很困难,我所有的旧数据都以这种格式存储,因此我想在Hive中解决此问题,而无需更改如何存储我的数据. 有我这样做的方法吗? 编辑: 谢谢 @mark-grover,这起作用了! 我做了这样的事情: SELECT id,
这是一个问题:如果我在这样的蜂巢中声明temporary function: add jar /home/taobao/oplog/hivescript/my_udf.jar; create temporary function getContentValue as 'com.my.udf.GetContentValue'; 在此Hive Session 中,它可以与函数getContentValue 一起工作.但是,我想要的是不必添加JAR,也不需要每次启动Hive会话时创建临时功能.也就是说,使功能永久. 这个问题有任何解决方案吗? 解决方案 截至0.13.0( hive-6047 )可以通过: 使UDF永久性 CREATE FUNCTION [db_name.]function_name AS class_name [USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ]