能否创建仅包含特定列的 Athena table?
Can an Athena table with only certain columns be created?
我有一组文件,其中的列比我们实际需要的多得多。其中,包含的列和顺序可能是可变的。使用此 Table 创建:
CREATE EXTERNAL TABLE `test1column`(
`column3` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://bucketpath/folder'
TBLPROPERTIES (
'has_encrypted_data'='false',
'transient_lastDdlTime'='1524150460')
Athena 只是拉入第一列,因此输出最终为:
column3
---------
column1
val1
val2
val3
我正在以编程方式创建这些 table,因此我希望不必通读每个列名并创建一个 table,其中包含比我需要的更多的数据。如果 Athena 无法仅将某些列映射到 table,那么我想我必须这样做。
我认为不,您必须创建一个包含所有列的 table,然后在从中选择数据时 table 您可以指定列。
我有类似的要求,我需要从存储在 S3 位置的镶木地板文件在 Athena 中创建一个外部 table。
我的研究表明,如果我们有列名,我们可以从 s3(parquet 格式)中提取所需的列。
例如:
假设名为 sample.parquet 的镶木地板文件有 3 列。
即- col1、col2 和 col3。
但是你想在 Athena 中创建一个 table 说 table1 只有 col1 和 col3 。
然后可以在下面找到对我有用的命令。
CREATE EXTERNAL TABLE IF NOT EXISTS table1
(
col1 String,
col3 String
)
STORED AS PARQUET
LOCATION 's3://{folder-location}/sample.parquet/'
tblproperties("parquet.compress"="SNAPPY")
上面的代码片段只会提取我们希望从 parquet 文件中提取的两列。
AWS 文档请参考:-
Removing Columns
我有一组文件,其中的列比我们实际需要的多得多。其中,包含的列和顺序可能是可变的。使用此 Table 创建:
CREATE EXTERNAL TABLE `test1column`(
`column3` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://bucketpath/folder'
TBLPROPERTIES (
'has_encrypted_data'='false',
'transient_lastDdlTime'='1524150460')
Athena 只是拉入第一列,因此输出最终为:
column3
---------
column1
val1
val2
val3
我正在以编程方式创建这些 table,因此我希望不必通读每个列名并创建一个 table,其中包含比我需要的更多的数据。如果 Athena 无法仅将某些列映射到 table,那么我想我必须这样做。
我认为不,您必须创建一个包含所有列的 table,然后在从中选择数据时 table 您可以指定列。
我有类似的要求,我需要从存储在 S3 位置的镶木地板文件在 Athena 中创建一个外部 table。 我的研究表明,如果我们有列名,我们可以从 s3(parquet 格式)中提取所需的列。
例如: 假设名为 sample.parquet 的镶木地板文件有 3 列。 即- col1、col2 和 col3。 但是你想在 Athena 中创建一个 table 说 table1 只有 col1 和 col3 。 然后可以在下面找到对我有用的命令。
CREATE EXTERNAL TABLE IF NOT EXISTS table1
(
col1 String,
col3 String
)
STORED AS PARQUET
LOCATION 's3://{folder-location}/sample.parquet/'
tblproperties("parquet.compress"="SNAPPY")
上面的代码片段只会提取我们希望从 parquet 文件中提取的两列。
AWS 文档请参考:- Removing Columns