我正在尝试在Google Compute引擎上运行Hadoop Job来对抗我们的压缩数据,该数据位于Google云端存储上.在尝试通过SequenceFileInputFormat读取数据时,我得到以下异常:
hadoop@hadoop-m:/home/salikeeno$ hadoop jar ${JAR} ${PROJECT} ${OUTPUT_TABLE}
14/08/21 19:56:00 INFO jaws.JawsApp: Using export bucket 'askbuckerthroughhadoop' as specified in 'mapred.bq.gcs.bucket'
14/08/21 19:56:00 INFO bigquery.BigQueryConfiguration: Using specified project-id 'regal-campaign-641' for output
14/08/21 19:56:00 INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.2.8-hadoop1
14/08/21 19:56:01 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/08/21 19:56:03 INFO input.FileInputFormat: Total input paths to process : 1
14/08/21 19:56:09 INFO mapred.JobClient: Running job: job_201408211943_0002
14/08/21 19:56:10 INFO mapred.JobClient: map 0% reduce …Run Code Online (Sandbox Code Playgroud) google-api google-api-java-client google-compute-engine snappy google-hadoop
当我们在一些处理之后使用Spark时,我将结果存储到文件中,并使用简单的代码使用snappy编解码器:
data.saveAsTextFile("/data/2014-11-29",classOf[org.apache.hadoop.io.compress.SnappyCodec])
Run Code Online (Sandbox Code Playgroud)
之后我使用Spark来读取这个文件夹文件,所以Everything工作得很好!但是今天我尝试在我的电脑中使用java snappy(java-snappy 1.1.1.2)来解压缩结果文件夹中的文件(这个文件是从这个文件夹中下载到我的Pc的文件之一)
maven依赖:
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.1.1.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我用这段代码解压缩:
File fileIn = new File("E:\\dt\\part-00000.snappy");
File fileOut = new File("E:\\dt\\adv1417971604684.dat");
FileOutputStream fos = new FileOutputStream(fileOut, true);
byte[] fileBytes = Files.readAllBytes(Paths.get(fileIn.getPath()));
byte[] fileBytesOut = Snappy.uncompress(fileBytes);
fos.write(fileBytesOut);
Run Code Online (Sandbox Code Playgroud)
但是:(我立即得到这个错误:
java.io.IOException: FAILED_TO_UNCOMPRESS(5)
at org.xerial.snappy.SnappyNative.throw_error(SnappyNative.java:84)
at org.xerial.snappy.SnappyNative.rawUncompress(Native Method)
at org.xerial.snappy.Snappy.rawUncompress(Snappy.java:444)
at org.xerial.snappy.Snappy.uncompress(Snappy.java:480)
at org.xerial.snappy.Snappy.uncompress(Snappy.java:456)
at
Run Code Online (Sandbox Code Playgroud)
在火花群中我们使用:
spark 1.1.0 && hadoop 2.5.1(原生hadoop snappy)
这是我运行hadoop checknative -a的结果:
14/12/09 16:16:57 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
14/12/09 16:16:57 INFO zlib.ZlibFactory: Successfully …Run Code Online (Sandbox Code Playgroud) 我知道使用镶木地板创建表格的语法,但我想知道使用镶木地板格式创建表格并通过snappy压缩是什么意思,我们如何做到这一点?请帮我一个示例语法.
使用snappy压缩有什么好处?
我正在尝试对 Hdfs 中的镶木地板文件进行数据保留。对于已经用 snappy 压缩的这些类型的文件类型,哪种压缩技术比较好?
如何在Ubuntu Core中发出HTTPS(或HTTP)请求?该卷曲和wget的不可用(我不知道任何替代品)。
我正在尝试使用此行更新DtDns: https://www.dtdns.com/api/autodns.cfm?<options>
-
编辑
无法找到任何快速便捷的解决方案,因此走了更长的弯路,并学习了如何使用snapcraft(在经典模式下)创建捕捉。然后只需将curl和我的bash脚本一起包括在内即可。这是我的snap.yaml的摘录:
apps:
my-app:
command: my-app.sh
daemon: simple
restart-condition: always
parts:
client:
plugin: dump
source: my-app-src/
stage-packages:
- curl
Run Code Online (Sandbox Code Playgroud)
一个很好的起点:如何构建快照-教程。
蜂巢 2.1
我有以下表格定义:
CREATE EXTERNAL TABLE table_snappy (
a STRING,
b INT)
PARTITIONED BY (c STRING)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION '/'
TBLPROPERTIES ('parquet.compress'='SNAPPY');
Run Code Online (Sandbox Code Playgroud)
现在,我想向其中插入数据:
INSERT INTO table_snappy PARTITION (c='something') VALUES ('xyz', 1);
Run Code Online (Sandbox Code Playgroud)
但是,当我查看数据文件时,我看到的只是没有任何压缩的普通镶木地板文件。在这种情况下如何启用快速压缩?
目标:以镶木地板格式和 SNAPPY 压缩配置单元表数据。
我也尝试过设置多个属性:
SET parquet.compression=SNAPPY;
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET mapred.output.compression.type=BLOCK;
SET mapreduce.output.fileoutputformat.compress=true;
SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET PARQUET_COMPRESSION_CODEC=snappy;
Run Code Online (Sandbox Code Playgroud)
也
TBLPROPERTIES ('parquet.compression'='SNAPPY');
Run Code Online (Sandbox Code Playgroud)
但没有任何帮助。我对 GZIP 压缩进行了同样的尝试,但似乎效果不佳。我开始思考这是否可能。任何帮助表示赞赏。
我听说Google snappy是一个快速解压缩库.
Snappy库使用什么作为算法?
是否有一些算法在解压缩方面更快?
压缩率和编码不是我的兴趣,但实时解压缩是我感兴趣的.
非常感谢你提前!
snappy ×7
compression ×4
parquet ×3
hadoop ×2
hive ×2
apache-spark ×1
bash ×1
google-api ×1
hdfs ×1
java ×1
linux ×1
ubuntu ×1