这是下面的Hive表
CREATE EXTERNAL TABLE IF NOT EXISTS SampleTable
(
USER_ID BIGINT,
NEW_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
Run Code Online (Sandbox Code Playgroud)
这是上表中的数据 -
1015826235 [{"product_id":220003038067,"timestamps":"1340321132000"},{"product_id":300003861266,"timestamps":"1340271857000"}]
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在爆炸阵列后从HiveQL获得以下输出吗?
**USER_ID** | **PRODUCT_ID** | **TIMESTAMPS**
------------+------------------+----------------
1015826235 220003038067 1340321132000
1015826235 300003861266 1340271857000
Run Code Online (Sandbox Code Playgroud)
更新
我写了这个查询以获得上述格式的输出,但它并没有按照我想要的方式给出结果.
SELECT myTable1.myCol1,myTable2.myCol2 FROM sampletable st LATERAL VIEW
explode(st.purchased_item.product_id) myTable1 AS myCol1 LATERAL VIEW
explode(st.purchased_item.timestamps) myTable2 AS myCol2;
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决我的错误吗?任何建议将不胜感激.
我已经在链接上配置了我的Hive:http://www.youtube.com/watch?v = Dqo1ahdBK_A,但是在Hive中创建表时出现以下错误.我使用hadoop-1.2.1和hive-0.12.0.
hive> create table employee(emp_id int,name string,salary double);
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
Run Code Online (Sandbox Code Playgroud) 我正在使用Spark和PySpark.我试图实现相当于以下伪代码的结果:
df = df.withColumn('new_column',
IF fruit1 == fruit2 THEN 1, ELSE 0. IF fruit1 IS NULL OR fruit2 IS NULL 3.)
Run Code Online (Sandbox Code Playgroud)
我试图在PySpark中这样做,但我不确定语法.有什么指针吗?我调查expr()但无法让它工作.
请注意,这df是一个pyspark.sql.dataframe.DataFrame.
我有一个蜂巢桌,
name age sal
A 45 1222
B 50 4555
c 44 8888
D 78 1222
E 12 7888
F 23 4555
Run Code Online (Sandbox Code Playgroud)
我想计算年龄栏的中位数.
以下是我的方法
select min(age) as HMIN,max(age) as HMAX,count(age) as HCount,
IF(count(age)%2=0,'even','Odd') as PCOUNT
from v_act_subjects_bh;
Run Code Online (Sandbox Code Playgroud)
感谢任何查询建议
你好朋友,
我借助以下命令在hive中创建了表 -
CREATE TABLE db.test
(
fname STRING,
lname STRING,
age STRING,
mob BIGINT
) row format delimited fields terminated BY '\t' stored AS textfile;
Run Code Online (Sandbox Code Playgroud)
现在从文件加载表中的数据,我使用以下命令 -
load data local inpath '/home/cluster/TestHive.csv' into table db.test;
Run Code Online (Sandbox Code Playgroud)
问题是,所有行都插入了,我不想要第一行,因为它只包含列名.
请建议我跳过第一行的方法.
提前致谢.
我在HIVE中编写代码来创建一个包含1300行和6列的表:
create table test1 as SELECT cd_screen_function,
SUM(access_count) AS max_count,
MIN(response_time_min) as response_time_min,
AVG(response_time_avg) as response_time_avg,
MAX(response_time_max) as response_time_max,
SUM(response_time_tot) as response_time_tot,
COUNT(*) as row_count
FROM sheet WHERE ts_update BETWEEN unix_timestamp('2012-11-01 00:00:00') AND
unix_timestamp('2012-11-30 00:00:00') and cd_office = '016'
GROUP BY cd_screen_function ORDER BY max_count DESC, cd_screen_function;
Run Code Online (Sandbox Code Playgroud)
现在我想添加另一列,access_count1其中包含所有1300行的唯一值,值将是sum(max_count).max_count是我现有表中的一列.我怎么能这样做?我试图通过此代码更改表ALTER TABLE test1 ADD COLUMNS (access_count1 int) set default sum(max_count);
来自hive -h:
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
Run Code Online (Sandbox Code Playgroud) 我在这里是个noobie.我正在尝试根据hive中的工资(版本0.11)从我的员工列表中检索前2个表.既然它不支持TOP功能,还有其他选择吗?或者我们是否定义了UDF?
我正在使用Spark SQL(我提到它是在Spark中,以防影响SQL语法 - 我还不够熟悉)我有一个表,我试图重新构建,但我是卡住试图同时转置多个列.
基本上我的数据看起来像:
userId someString varA varB
1 "example1" [0,2,5] [1,2,9]
2 "example2" [1,20,5] [9,null,6]
Run Code Online (Sandbox Code Playgroud)
我想同时爆炸varA和varB(长度总是一致的) - 所以最终输出如下所示:
userId someString varA varB
1 "example1" 0 1
1 "example1" 2 2
1 "example1" 5 9
2 "example2" 1 9
2 "example2" 20 null
2 "example2" 5 6
Run Code Online (Sandbox Code Playgroud)
但我似乎只能在一个命令中使用单个explode(var)语句,如果我尝试链接它们(即在第一个explode命令之后创建临时表),那么我显然会得到大量重复,不必要的行.
非常感谢!