我有一大堆的存储在包含这样记录的Blob存储CSV文件,我SparkSQL查询:为什么不工作,其中作为HIVE返回数据
2016-04-19 20:26:01.0299,+05:30,ecc84966-9bc0-4bef-9cd2-ad79c25be278,test001,178.03499442294,,Good
2016-04-19 20:26:02.0303,+05:30,ecc84966-9bc0-4bef-9cd2-ad79c25be278,test001,160.205223861246,,Good
我已经创建了一个外部蜂巢表具有以下命令
CREATE EXTERNAL TABLE my_history (
DataTimestamp Timestamp,
TimezoneOffset String,
SystemGuid String,
TagName String,
NumericValue Double,
StringValue String
)
PARTITIONED BY (year int, month int, day int, hour int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE LOCATION 'wasb://[email protected]/';
,并已成功地添加许多分区像下面一个月有价值的数据
ALTER TABLE my_history ADD IF NOT EXISTS PARTITION (year=2016, month = 03, day= 16, hour=00) LOCATION "Year=2016/Month=03/Day=16/Hour=00"
大约有135,733,286记录在表中,至少这是以下Hive查询select count(*) from my_history
说。
现在我有以下2个问题:
1 Jupyter挂起
当我执行这样hiveContext.sql("select count(*) from my_history").show()
我没有得到任何结果,甚至也不例外,查询,其中从蜂巢运行相同经过很长的时间,例如400+秒,给我135,733,286。
2.见效慢
我想一个简单的重复查询的蜂巢这样
SELECT
my_history.DataTimestamp,
my_history.TagName,
COUNT(*) as count,
MIN(my_history.NumericValue) as min_value,
MAX(my_history.NumericValue) as max_value
FROM
default.my_history
WHERE
my_history.TagName = 'test021'
GROUP BY
my_history.TagName,
my_history.DataTimestamp
HAVING
count > 1;
花费近450秒内返回结果,我有点希望它返回结果这是我的HDInsight集群中接近60个内核的一小部分。再次从Jupyter运行它没有得到任何结果,也没有多次运行相同的查询改进了性能,因为我已经读过Spark缓存rdd的下一个查询。
我在这里错过了什么?如果在纱线没有资源,为您的笔记本电脑开始新的火花应用
感谢 基兰
Didi您是否尝试以比TextFile更精确的格式存储数据而不进行压缩?例如。 ORC或Parquet与GZip或Snappy?您可能会看到I/O(由于列式存储+压缩)以及可能在CPU上的巨大减少(尽管解压缩会花费更少的I/O等待,更快的反序列化)。 –
关于Jupyter“挂”:你检查了'jupyter'控制台中的Spark日志?火花是一个非常详细的野兽。如果司机在等待什么,它应该在那里显示。如果司机坠毁或离开僵尸,它肯定会显示。 –