先声明一下,这不是Hadoop的生产环境。这是一个我们测试工作流的单节点环境
set mapreduce.input.fileinputformat.split.minsize
set mapreduce.input.fileinputformat.split.maxsize
set mapreduce.job.maps
DROP TABLE IF EXISTS web.traffic_pageviews;
CREATE TABLE web.traffic_pageviews(
SESSION_ID STRING,
COOKIE_ID STRING,
TS TIMESTAMP,
PAGE STRING,
PAGE_URL_BASE STRING,
PAGE_URL_QUERY STRING,
PAGE_REFERRAL_URL_BASE STRING,
PAGE_REFERRAL_URL_QUERY STRING)
PARTITIONED BY (DS STRING)
STORED AS PARQUET;
INSERT OVERWRITE TABLE web.traffic_pageviews PARTITION(ds='2016-12-28')
select
session_id,
cookie_id,
ts,
page,
SPLIT(PAGE_URL,'\\?')[0] PAGE_URL_BASE,
SPLIT(PAGE_URL,'\\?')[1] PAGE_URL_QUERY,
SPLIT(PAGE_REFERRAL_URL,'\\?')[0] PAGE_REFERRAL_URL_BASE,
SPLIT(PAGE_REFERRAL_URL,'\\?')[1] PAGE_REFERRAL_URL_QUERY
from
web.stg_traffic_pageviews
where
ds='2016-12-28';
2017-01-03 07:11:02,053 INFO [main] org.apache.hadoop.hive.ql.io.parquet.write.ParquetRecordWriterWrapper: real writer: parquet.hadoop.ParquetRecordWriter@755cce4b
2017-01-03 07:11:02,057 INFO [main] org.apache.hadoop.hive.ql.exec.FileSinkOperator: FS[1]: records written - 1
2017-01-03 07:11:02,062 INFO [main] org.apache.hadoop.hive.ql.exec.MapOperator: MAP[2]: records read - 1
2017-01-03 07:11:02,064 INFO [main] org.apache.hadoop.hive.ql.exec.FileSinkOperator: FS[1]: records written - 10
2017-01-03 07:11:02,064 INFO [main] org.apache.hadoop.hive.ql.exec.MapOperator: MAP[2]: records read - 10
2017-01-03 07:11:02,082 INFO [main] org.apache.hadoop.hive.ql.exec.FileSinkOperator: FS[1]: records written - 100
2017-01-03 07:11:02,082 INFO [main] org.apache.hadoop.hive.ql.exec.MapOperator: MAP[2]: records read - 100
2017-01-03 07:11:02,356 INFO [main] org.apache.hadoop.hive.ql.exec.FileSinkOperator: FS[1]: records written - 1000
2017-01-03 07:11:02,356 INFO [main] org.apache.hadoop.hive.ql.exec.MapOperator: MAP[2]: records read - 1000
2017-01-03 07:11:03,775 INFO [main] org.apache.hadoop.hive.ql.exec.FileSinkOperator: FS[1]: records written - 10000
2017-01-03 07:11:03,775 INFO [main] org.apache.hadoop.hive.ql.exec.MapOperator: MAP[2]: records read - 10000
2017-01-03 07:12:03,679 FATAL [LeaseRenewer:cloudera@quickstart.cloudera:8020] org.apache.hadoop.yarn.YarnUncaughtExceptionHandler: Thread Thread[LeaseRenewer:cloudera@quickstart.cloudera:8020,5,main] threw an Error. Shutting down now...
java.lang.OutOfMemoryError: Java heap space
在指定表上的压缩后,问题自行解决。具体来说:
CREATE TABLE web.traffic_pageviews(
...
)
PARTITIONED BY (DS STRING)
STORED AS PARQUET
TBLPROPERTIES ("parquet.compression"="SNAPPY");
虽然这是答案,但我不明白为什么它能起作用。如果有人有洞察力,将不胜感激。
我正在使用Spark生成拼花文件(通过分区,使用Snappy压缩),并将它们存储在HDFS位置。 拼花数据文件存储在下 然后为其创建配置单元表,如下所示:
我试图为我的表创建分区,以便更新一个值。 这是我的样本数据 我想把珍妮特的部门更新到B。 为此,我创建了一个以Department为分区的表。 创建外部表trail(EmployeeID Int、FirstName String、Designation String、Salary Int),按(Department String)行格式分隔字段进行分区,以“,”location'/user/sre
更新:恰恰相反。实际上,我们的表非常大,就像3个TB有2000个分区。3TB/256MB实际上会达到11720,但我们的分区数量与表的物理分区数量完全相同。我只想了解任务是如何在数据量上生成的。
我对alter table有一个问题,它改变了表模式,而不是parquet模式。 例如,我有一个<code>PARQUET<code>表,其中包含以下列: 现在,我尝试用 使用描述表,我可以看到第2列不再存在; 现在我尝试执行但我收到这样的错误: “data.0.parq”的类型与列column4的表架构不兼容。预期类型:INT64。实际类型:字节数组" 已删除列的值尚存在于具有 5 列而不是 4