这里是Hadoop/Hive新手。我正在尝试使用Hive中以自定义基于文本的格式存储的数据。我的理解是,您可以编写一个自定义的FileFormat或一个自定义的SerDe类来实现这一点。是这样还是我误解了?关于何时选择哪个选项,有哪些一般性的指导原则?谢谢 如果您正在使用Hive,请编写一个serde。参见以下示例:
请注意,此接口是特定于配置单元的。如果您想在常规hadoop作业中使用自定义文件格式,则必须实现一个单独的接口(我不完全确定是哪个接口)
如果您已经知道如何用另一种语言反序列化数
我在hive中有以下数据:
userid cityid
1 15
2 15
1 7
3 15
2 8
3 9
3 7
我只想保留具有cityid 15和cityid 7的userid(在我的示例中,它将是userid的1和3)。
我试过:
但对于蜂巢来说,它不起作用。
有人能帮忙吗
谢谢 好的,我找到了方法:
select a.userid from (select userid from table where cityi
文件夹metastore\u db是在运行配置单元查询的任何目录中创建的。有没有办法在一个定义的位置只有一个metastore_db,并阻止在所有位置创建它?它与hive.metastore.local有关吗?这里感兴趣的属性是javax.jdo.option.ConnectionURL。此属性的默认值是jdbc:derby:;databaseName=metastore_db;create=true。此值指定将使用嵌入式derby作为配置单元元存储,并且元存储的位置为metastore\u d
我正在尝试查询一个表,其中包含色调上的“st_日期”和“end_日期”字段。这些字段采用字符串类型值,例如“2014-04-04”、“2009-10-10”等。假设我想查找st_date=2014-04-04'和end_date='2014-10-10'之间的记录,这两个日期都包括:
如何编写查询以检索记录,其中st_date>2014-04-03和end_dateCAST(翻译(“2014-04-03,”-“,”)为BIGINT)和CAST(翻译(结束日期,“-”,”)为BIGINT)“201
标签: Hive
data-warehousemetastore
我正在使用Cloudera CDH 5.0.2,希望将flume数据导入到Hive元存储中/warehouse@HDFS. 但它不起作用
我使用了以下JSON SerDe:
我使用以下代码使用配置单元编辑器创建表:
CREATE EXTERNAL TABLE tweets (
id BIGINT,
created_at STRING,
source STRING,
favorited BOOLEAN,
retweeted_status STRUCT<
text:
我想在我的配置单元表中插入计数*的结果:
hive -e "use eapi;INSERT into searchresults 'ANZHAUS_GES','Null',(select count(*) from adpubsdmdata WHERE ANZHAUS_GES>=0 && ANZHAUS_GES<=0);"
我得到的结果是:
表名称中的searchresults附近缺少表
我做错了什么 您需要将其格式化为子查询:
hive -e "use e
我有一个配置单元表,其中一列是字符串数组。我还有一组自定义UDF,用于处理单个字符串。我想让hive对数组中的每个元素执行自定义UDF,然后将结果作为修改后的数组返回
这似乎是一个简单的要求,但我无法找到一个简单的解决方案。我发现了两种可能性,没有一种是简单的:
使用explode和侧向视图执行配置单元SQL操作,然后调用UDF,然后聚合回数组。这似乎太过分了,因为我看不到它在少于2个mapreduce作业中执行(但我可能在这里错了)
将我的每个UDF实现为GenericUDF,该UDF随数组一
我有这个数据类型信息映射,如果我在配置单元控制台中选择这个字段,结果将如下所示
{“a”:“value1”,“b”:“value2”}
如何在文本文件中表示此数据,以便在将其导入配置单元表时正确表示。我的意思是我的文本文件应该有这样的内容吗
a:value1,b:value2您是否尝试在配置单元中加载JSON文档?可以在配置单元中加载和查询JSON数据
在您的情况下,“a”和“b”将成为列名(标题)
我有以下输入csv文件
10418872, fever, FALSE
10418872, shortness of breath, FALSE
10418872, shortness of breath, FALSE
10418872, shortness of breath, FALSE
我使用这些命令创建了一个配置单元表,并在其中加载了数据
create database bpo;
CREATE EXTERNAL TABLE bpo.adverse(patientId INT, sympt
标签:elasticsearch Hive
external-tables
完全无法从配置单元外部表获取数据。到目前为止,我一直在做下面的工作
我有一个带有日期字段的托管表,其值为2014-10-23
我创建了外部表来存储弹性搜索中的数据,如下所示
创建外部表ext3(
运行(日期)
行格式SERDE'org.elasticsearch.hadoop.hive.EsSerDe'
由“org.elasticsearch.hadoop.hive.EsStorageHandler”存储
TBLProperty('es.resource'='dfs/ext3','es.fiel
我正在使用CentOS 6.5,希望访问远程配置单元服务器。但是我无法使用pip install pyhs2安装pyhs2
我已安装所有必需的依赖项:
gcc-c++
python-devel.x86_64
cyrus-sasl-devel.x86_64
但我还是犯了同样的错误:
Failed building wheel for sasl
Failed to build sasl
Installing collected packages: sasl, pyhs2
Running setu
我在蜂巢里有一张桌子,每小时都会通过Spark/Parquet更新一次
CREATE TABLE IF NOT EXISTS user
(
name STRING,
creation_date DATE,
cards map<STRING,STRING>
) STORED AS PARQUET ;
结果是这样的
KillerZord1001 2016-01-02 {"Archer":"2",&qu
标签: Hive
out-of-memoryreducememory-efficienthadoop-partitioning
您能指导我解决这个GC开销和堆空间错误吗
我正在尝试使用以下查询从另一个表(动态分区)插入分区表:
INSERT OVERWRITE table tbl_part PARTITION(county)
SELECT col1, col2.... col47, county FROM tbl;
我已运行以下参数:
export HADOOP_CLIENT_OPTS=" -Xmx2048m"
set hive.exec.dynamic.partition=true;
set hive.exe
标签: Hive
apache-spark-sqlmetastore
我知道这个问题有点奇怪。我喜欢Hadoop和HDFS,但最近在使用Hive Metastore开发SparkSQL
我想使用SparkSQL作为一个垂直的SQL引擎来跨不同的数据源运行OLAP查询,比如RDB、Mongo、Elastic。。。没有ETL过程。然后,我使用相应的配置单元存储处理程序将不同的模式注册为Metastore中的外部表
此外,HDFS在我的工作中没有用作数据源。然后,给定的Map/R已经被Spark engine取代。在我看来,Hadoop/HDFS除了为Hive的安装奠定
我们面临以下问题详情如下,请分享您的意见
1) sqoop中的--validate选项存在问题
如果我们运行sqoop命令而不为其创建作业,那么validate可以工作。但是如果我们先创建一个作业,使用validate选项,validate似乎不起作用
配合
sqoop导入--连接“DB连接”-username$USER--密码文件$file_Path--仓库目录$TGT_dir--作为文本文件--字段以“|”结尾--行以“\n”结尾--表emp_table-m1--outdir$HOME/ja
配置单元只支持小数点后的一个精度。我们可以更改配置单元中浮点的精度值吗?如果没有,我们可以覆盖配置单元浮点函数
Ex: Hive support float as below
create table test(amount float);
amount
------
100.0
Expectation :
create table test(amount float(10,4));
amount
------
10000.000
我创建了一个配置单元表“sample”,其所有者为“X”
hive> show table extended like sample;
--将所有者显示为“X”
hive> show table extended like sample;
是否有一种方法可以将所有者更改为其他“Y”,而无需重新创建表(不希望丢失数据)
一个已知的选项是直接在postgres配置单元元存储表中更新所有者
hive=# update "TBLS" set "OWNER" = 'Y' where "OW
我们可以在配置单元数据文件中使用引号(“或”)作为分隔符吗?如果不能,为什么?
如果我们可以引用一个可以用作配置单元数据分隔符的字符列表,那就太好了。当使用十进制表示法时,您可以使用整个基本ascii范围(十进制0-127)测试
避免使用\n或\r
至于“和”,可以直接完成-
create table mytable (i int,j int) row format delimited fields terminated by '"';
create table mytable (i int,j
是否可以按列在配置单元表中添加数据
例如:
假设我有一个这样的蜂箱表(t1)
table:
col1 col2
1 20
34 78
67 89
我有一些单独的数据,比如
col3
10
20
30
COL3,你可以把它看成一个数组或一个表。对于同一个表t1,我希望实现如下效果:
col1 col2 col3
1 20 10
34 78 20
标签: Hive
hqlparquethcatalog
我有一个配置单元表,它将保存数十亿条记录,这是一个时间序列数据,因此分区是每分钟一次。每分钟我们将有大约100万条记录
我的表中只有几个字段,VIN编号(17个字符),状态(2个字符)。。。等
所以我的问题是,在创建表的过程中,如果我选择使用Varchar(X)vs String,是否存在任何存储或性能问题
varchar的一些限制是
如果我们提供超过“x”个字符,它将自动截断,所以
保持它的连续性将是未来的证明
非泛型UDF不能直接使用varchar类型作为输入参数
或返回值。可以创建字符串
标签: Hive
locationexternalcreate-table
我想从视图在蜂巢中创建一个外部表,并更改默认的位置:
CREATE external TABLE market.resultats like v_ca_mag
LOCATION '/user/training/market/db/resultats';
创建了表,该表是外部的,但位置是默认的/user/hive/warehouse/market.db/resultats
为什么不考虑位置
我正在使用cdh 5.4可能是一个bug,请打开jira来解释这个问题
作为一种解决方法,一旦创建完外部表
我们有一个Avro格式的数据集,每个Avro文件中都有模式
我想在这些文件上建立配置单元表
我从社区里的一个老问题中得到了以下建议:
创建存储为AVRO位置的外部表sampe_表'hdfs:///user/hive/;
但每当我尝试时,总是会出现错误:
java.lang.Exception: java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from
我正在努力学习Hive,特别是像unix时间戳和unixtime中的unix\u timestamp和这样的函数
我有三张桌子
emp (employee table)
+---+----------------+
| id| name|
+---+----------------+
| 1| James Gordon|
| 2| Harvey Bullock|
| 3| Kristen Kringle|
+---+----------------+
txn
我正在Teradata PrestoDB发行版中为Hivecatalog运行一个查询,如下所示:
CREATE EXTERNAL TABLE hive.default.mydata
id INT, datetime timestamp, latitude FLOAT,
longitude FLOAT, bookingid VARCHAR, pre_lat FLOAT,
pre_long FLOAT, time_hour decimal(6, 1), dist_kms decimal(6, 1),
我试图为给定的日期确定一周的开始时间(星期天,作为一个日期)。这项功能在星期天除外,因为一周的起始日期从星期一开始:
SELECT DATE_SUB(FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_DATE(), 'yyyy-MM-dd')), CAST(FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_DATE(), 'yyyy-MM-dd'), 'u') AS INT))
上述函数将返回“2018-04-15”,提供日期为“2018-04-
我有以下三张桌子
tab_2016
+-----+------+---------+
| id | month| salary |
+-----+------+---------+
| 002 | aug | 500 |
| 002 | sep | 400 |
+-----+------+---------+
tab_2017
+-----+------+---------+
| id | month| salary |
+-----+------+---
标签: Hive
hiveqlhive-partitions
我在配置单元中每年有三个分区表,所有表都有多个分区。作为我要求的一部分,我将加入所有这三个表格。现在,我只想为最新的分区运行此sql,而不是为以前创建的分区运行此sql
我试图在where子句中使用maxpartition,但似乎不受支持
我做了一些类似于下面的事情,而不是确切的代码。只是一个代码概念
select
a.*,
b.*,
c.*
from table1 a
left join table2 b on a.ID = b.ID
left join table3 c on a.ID =
标签: Hive
bigdataimpalacomplex-data-types
我和BigData技术有一个新的合作伙伴。
我创建了一个带有列数据类型数组的表
CREATE TABLE movies (
movie_id int,
title string,
genres ARRAY<STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ':'
COLLECTION ITEMS TERMINATED BY '|'
MAP KEYS TERMINATED BY '#'
LINE
标签: Hive
azure-storage-blobsorcacid
在HDFS配置单元上,配置单元合并的ORC ACID没有问题
在S3上不可能
对于Azure HD Insight,我从文档中不清楚是否可以在Azure Blob存储上创建这样的表?寻求确认或其他方式
我很确定不行。但是,请参见我对答案的更新。根据Azure HDInsight官方文档,如下图所示
正如我所知,配置单元合并需要MapReduce,但HDInsight不支持配置单元合并,因此也不可能
按问题更新海报
HDInsight 4.0不支持针对Apache配置单元的MapReduce。改
我正在使用Hive版本1.2.1。如果我从mytable运行selectcount(*),我会看到它启动了一个Tez作业。因此,显然它没有使用任何表统计信息,因为理想情况下,行数应该从存储在配置单元元存储中的表统计信息中获取。我还显式地检查了配置单元元存储中的所有表,但在那里没有找到任何表名,这在某种程度上表明它存储了表统计信息。我能看到的唯一次好的相关表是TAB\u COL\u STATS,但是这个表只存储列级统计信息,而且它也只有非常少的行,这个表有10行。这提出了两个问题
此版本的配置单元
在配置单元中获取错误:顶点失败#某些顶点名称#由于Root_输入_init_失败而被杀死/失败我不确定这是内存问题;参数为
tez.am.resource.memory.mb是容器的大小。
容器的数量是数据源的计算大小的函数。
使用crypto时,常见的解决方法是(顶点因map和Reduce之间的格式更改而崩溃)
更新以下参数:set hive.auto.convert.join=false;
set hive.auto.convert.join=false;
例如:这里我想从col1中得到不同的值,基于col1的不同值,我想得到col2的总计数,我需要得到col3的计数,方法是将值分成预测值和实际值两列
输出应该是
select col1,
count(*) as col2,
sum(case when col3='predicted' then 1 else 0 end) as predicted,
sum(c
我正在尝试从以下url运行flink目录示例:
从pyflink.table导入*
从pyflink.table.catalog导入HiveCatalog、CatalogDatabase、ObjectPath、CatalogBaseTable
从pyflink.table.descriptor导入卡夫卡
settings=EnvironmentSettings.new_instance()。在批处理模式()下。使用\u blink\u planner()。build()
t_env=Batch
是否有一个选项可以抑制映射并减少配置单元查询的进度,即
2013-04-07 19:21:05,538 Stage-1 map = 13%, reduce = 4%, Cumulative CPU 28830.05 sec
2013-04-07 19:21:06,558 Stage-1 map = 13%, reduce = 4%, Cumulative CPU 28830.05 sec
同时使用-v选项保留所有其他输出,尤其是查询本身
hive -S -v -e "select * fr
我有一个Pig脚本,它使用正则表达式提取一组字段,并将数据存储到配置单元表中
--Load data
cisoFortiGateDataAll = LOAD '/user/root/cisodata/Logs/Fortigate/ec-pix-log.20140625.gz' USING TextLoader AS (line:chararray);
--There are two types of data, filter type1 - The field dst_country see
标签: Hive
huehortonworks-data-platform
我正在尝试从HUE打开配置单元UI,但从Web UI中仅收到以下错误:
[Errno 104]对等方重置连接
我观察了蜂巢和色调日志,但没有任何错误报告。无论如何,Hive在命令行中运行良好,所以我不明白问题出在哪里。我的色调版本是2.6.1-2041,我使用Hadoop 2.6.0和Hive 0.14运行HDP2.2.0
当我尝试打开HCatalog时,也会发生同样的情况。hue2将查询提交到Beeswax,除非您将其指向HiveServer2:。他们起床了吗?您可以在/desktop/dum
Kibana能否连接弹性搜索以外的数据源,并在其他数据源的数据上构建可视化?
更具体地说,我希望将Kibana与Hive联系起来 不,您不能直接连接Kibana,但可以将Elasticsearch连接到hadoop。
使用es hadoop请参见
类似地,您可以将其他数据源连接到elasticsearch,如Logstash、es hadoop或第三方技术,如Apache Flume、Fluentd和其他许多技术。
见-
我有一个蜂箱表,如下所示:
"Rinalytics Advisors" "5-10 yrs" "Bengaluru/Bangalore Mumbai"
上面是我拥有的表的三列。我需要将此处指定的第三列拆分为两行。表中的值用空格分隔
预期产出如下:
Rinalytics Advisors 5-10 yrs Bengaluru/Bangalore
Rinalytics Advisors 5-10 yrs Mumbai
试试这
我为配置单元表创建了一个浮动列。然后我上传了一些lat/lng数据:
-74.223827433599993,40.698842158200002
-117.57601661229999,34.044852414099999
-81.055917609600002,29.239413820500001
-80.369884327199998,25.789129988199999
当我将数据查询出或查询到另一个表中时,舍入非常重要:
-74.22383,40.69884
-117.57602,3
如果有人想使用命令hive>use database\u name在配置单元中使用数据库它应该询问密码
我尝试使用Kerberos,但没有满足我的要求,因为它是用于完整集群的。如何使用密码身份验证?目前,在执行配置单元命令时,配置单元不支持密码登录,但作为配置单元数据库和表安全性的一部分,可以在您的场景中使用名为的东西
您可以根据集群管理员提到的用户访问级别轻松地限制用户
我是个蜂巢新手,需要你的帮助。我的要求是从表中获取最高日期,并且我的日期数据类型是string。我尝试使用max(),但它不适用于字符串数据类型。。。请在这方面帮助我。使用内置的日期函数
unix\u时间戳将字符串日期转换为unix\u时间戳为int,这是可比较的
假设您的表名为t,时间列为tt
从t中选择max(unix\u时间戳(tt,'yyyyymmdd')
将为您找到maxunix\u时间戳,它是最新的日期使用内置的日期函数
unix\u时间戳将字符串日期转换为unix\u时间戳为int
我有一个csv文件中的数据集。我在配置单元中创建了一个表,其中包含两个字段id和用户id。我使用select查询检索了数据。它显示id、用户id和NULL。我只想显示id和用户id。谁能帮我解决这个问题
样本数据;
116贾斯汀
582伊万
.....
查询:
配置单元>创建表配置单元注释(id字符串、用户id字符串)行格式分隔字段,以“,”结尾
配置单元>在路径“home/edureka/Documents/Project/dataDec-12-2015.csv”中将本地数据加载到表配置单元
SQL查询中NOT EXISTS子句的Spark SQL配置单元错误
以下“不存在”查询在配置单元提示符中正常运行:
从不存在的过渡t中选择a、b、c、d,从xyz\n ABC中选择a,其中a=a、b=b、c=c
但同样的程序在spark执行的查询中提供了错误不支持的语言特性
from pyspark import SparkContext
sc =SparkContext()
from pyspark.sql import HiveContext
sqlContext = HiveCont
是否可以将配置单元中一个表中所有记录的数据从A列复制到B列
表具有拼花格式和函数的问题删除,更新我们可以使用。表具有拼花格式和函数的问题删除,更新我们不能使用。创建另一个具有重命名列的表,删除旧表。
我想从传递的配置单元变量中减去一个数字。例如:
SET hiveconf:window_size = 12
SELECT id , max(marks) OVER(ORDER BY Date_time ROWS BETWEEN ${hiveconf:window_size}-1 PRECEDING AND CURRENT ROW) from Students;
但是window函数中的${hiveconf:window\u size}-1给出了错误
任何人都可以对此提出建议。它不喜欢边界之间行
我在配置单元表中有并行阵列,如下所示:
with tbl as ( select array(1,2,3) as x, array('a','b','c') as y)
select x,y from tbl;
x y
[1,2,3] ["a","b","c"]
1 row selected (0.108 seconds)
如何将它们压缩在一起(比如pythonzip函数),以便返回结构列表,比如
[(1, "a"), (2, "b"), (3,"c")]
您可以pose
标签: Hive
timestampbigdataavro
我们如何在Avro中声明一个简单的时间戳
类型:时间戳不起作用。所以我实际上使用了一个简单的字符串,但我希望它作为时间戳。(这是我的变量:27/01/1999 08:45:34)
感谢您使用Avro的逻辑类型:
{"name":"timestamp","type": {"type": "string", "logicalType": "timestamp-millis"}
一些有用的链接:
使用Avro的逻辑类型:
{"name":"timestamp","type": {"type"
我有几张桌子要选。我还想在其中一个表上使用sum。这是我到目前为止得到的
放下桌子。。。如果存在
创建表格。。。如果存在为
选择
fbp*
bcs.yyyy\U mm\U dd,
cspd.*,
来自xxx.fbp fbp
fbp.id=st.xml\u id上的内部联接表2 st
内连接
选择
案例
当field1为空时,则为0
ELSE Sumfield 1
结束为字段1
来自表2 bcs
其中yyyy\u mm\u dd>='2019-04-21'
按bcs.column\u id分组
作
标签: Hive
timestampformathiveqlutc
我正在使用Hive,手头有一项重要任务,需要当前时间戳的格式为2020-04-17T19:17:56.017719Z
如果您能在蜂箱中提供准确的解决方案,我们将不胜感激。
谢谢
结果:
2020-04-26T11:12:35.590Z
2020-04-26T11:28:13.433Z
2020-04-26T11:50:51.804Z
2020-04-26T21:53:31.261356Z
或者还有一种方法
select concat(from_unixtime(unix_timestam
我正在尝试将配置单元视图sqoop到SQL server数据库,但得到“未找到对象错误”。sqoop导出是否适用于配置单元视图
sqoop export --connect 'jdbc:jtds:sqlserver:<Connection String>' --table 'tax_vw' --hcatalog-database default --hcatalog-table tax_vw --connection-manager org.apache.sqoop.manager.
1 2 3 4 5 6 ...
下一页 最后一页 共 63 页