压缩—hadoop/hdfs中的默认存储文件格式

sirbozc5  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(502)

我正在建立一个新的hadoop集群(现阶段处于实验阶段)。
我希望对其进行配置,以便在将文件复制到集群时(通过copyfromlocal或使用sqoop等),hadoop/hdfs应该以parquet文件格式存储数据。
我的期望是对的吗?有可能吗?
我认为应该在hdfs级别的某个地方有一个配置参数,在那里我可以指定在存储数据时使用哪种格式,但不知何故找不到。不知道我是不是漏掉了什么。

e37o9pze

e37o9pze1#

不,你说得对-没有hdfs级别的配置。每次对某些数据进行操作时,都必须设置存储格式。想象一下,如果每个文件都自动转换成Parquet地板,会造成多大的损害。所有由应用程序创建的临时文件、任何hive/pig脚本和任何查找文件都将被销毁。
要将sqoop命令的输出保存到parquet中,请执行以下操作:

sqoop import --connect JDBC_URI --table TABLE --as-parquetfile --target-dir /path/to/files

将数据写入Parquet格式。
这是不可能的 copyFromLocal .
要将hdfs上已有的数据移动到parquet中,请将数据以其原始格式加载到外部配置单元表中,创建一个parquet表,然后将数据加载到其中,即。

//Overlay a table onto the input data on the HDFS
CREATE EXTERNAL TABLE input (
  id int,
  str string
STORED AS <the-input-data-format>
LOCATION 'hdfs://<wherever-you-put-the-data>';

//Create a Parquet-formatted table
CREATE TABLE parquet (
  id int,
  str string
STORED AS PARQUET;

//Write your input data into the Parquet table - this will format the data into Parquet
INSERT INTO TABLE parquet
SELECT * FROM input;

相关问题