Apache Spark 2无需指定存储格式默认创建Parquet表配置咨询
Spark 默认创建Parquet表配置方案
Spark SQL 自身的建表逻辑独立于Hive配置,你之前配置的hive.default.fileformat=parquet仅对Hive原生的建表操作生效,不会被Spark读取,因此无法生效,按照以下配置即可实现需求:
核心配置说明
你需要配置Spark专属的默认存储格式参数spark.sql.sources.default,该参数控制CREATE TABLE语句未指定存储格式时的默认数据源类型:
- 参数名:
spark.sql.sources.default - 取值:
parquet
如需保证创建的表在Hive侧也能正常识别为Parquet格式,可额外开启Hive元数据转换配置:
- 参数名:
spark.sql.hive.convertMetastoreParquet - 取值:
true
配置方式
1. EMR集群全局生效
在EMR控制台的配置分类中找到spark-defaults分类,添加上述两个参数,配置完成后重启Spark相关服务(如Spark Thrift Server),所有新启动的Spark应用都会自动加载该配置。
2. 单个Spark任务生效
提交任务时指定参数
spark-submit \ --conf spark.sql.sources.default=parquet \ --conf spark.sql.hive.convertMetastoreParquet=true \ <你的其他任务参数>
代码中初始化SparkSession时指定
val spark = SparkSession.builder() .config("spark.sql.sources.default", "parquet") .config("spark.sql.hive.convertMetastoreParquet", "true") .enableHiveSupport() .getOrCreate()
效果验证
配置完成后执行你提供的建表语句即可默认创建Parquet格式的外部表:
CREATE external table schema.table_a(id STRING, text STRING) LOCATION 'path_to_the tables'
建表完成后执行DESCRIBE FORMATTED schema.table_a即可查看存储格式确认配置生效。
内容的提问来源于stack exchange,提问作者Marcos Mussio
相关产品推荐
相关产品推荐

