sparksql parquet 分区推断Partition Discovery
网上找的大部分资料都很旧,最后翻了下文档只找到了说明

大概意思是1.6之后如果想要使用分区推断就要设置数据源的basePath,因此代码如下
java
public class ParitionInfer {
private static SparkConf conf = new SparkConf().setAppName("partitioninfer");
private static JavaSparkContext jsc = new JavaSparkContext(conf);
private static SparkSession session = new SparkSession(jsc.sc());
public static void main(String[] args) {
// 加载数据源
Dataset<Row> dataset = session.read().option("basePath", "hdfs://hadoop002:9000/spark_sql/users/")
.parquet("hdfs://hadoop002:9000/spark_sql/users/gender=male/country=us/users.parquet");
dataset.printSchema();
dataset.show();
session.stop();
jsc.close();
}
}
(注意basePath与实际的parquet文件的路径,basePath是分区推断列之前的路径)
scala
object PartitionInfer {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("partitioninfer").setMaster("local")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val df = sqlContext.read.option("basePath", "f:/").parquet("f:/gender=male/country=us/users.parquet")
df.printSchema()
df.show()
}
}
scala的版本用的本地路径,测试发现依然可以实现分区推断
sparksql parquet 分区推断Partition Discovery的更多相关文章
- 39、Parquet数据源之自动分区推断&合并元数据
一.自动分区推断 1.概述 表分区是一种常见的优化方式,比如Hive中就提供了表分区的特性.在一个分区表中,不同分区的数据通常存储在不同的目录中, 分区列的值通常就包含在了分区目录的目录名中.Spar ...
- 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指 ...
- Azure CosmosDB (7) 分区键Partition Key
<Windows Azure Platform 系列文章目录> Azure Cosmos DB使用分区键(Partition Key),来对数据进行水平缩放(Horizon Scale), ...
- 深入解析MySQL分区(Partition)功能
自5.1开始对分区(Partition)有支持 = 水平分区(根据列属性按行分)= 举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录. === 水平分区 ...
- mysql分区(partition)
1)按范分区(range) partition by range(Year(birthday))( partition p0 values less than 1960, partition p1 v ...
- hive分区(partition)
网上有篇关于hive的partition的使用讲解的比较好,转载了:一.背景1.在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据, ...
- hive分区partition(动态和静态分区混合使用; partition的简介)
分区是hive存放数据的一种方式.将列值作为目录来存放数据,就是一个分区.这样where中给出列值时,只需根据列值直接扫描对应目录下的数据,不扫面其他不关心的分区,快速定位,查询节省大量时间.分动态和 ...
- Oracle12c中分区(Partition)新特性之TRUNCATEPARTITION和EXCHANGE PARTITION级联功能
TRUNCATE [SUB]PARTITION和EXCHANGE [SUB]PARTITION命令如今可以包括CASCADE子句,从而允许参照分区表向下级联这些操作.为确保该选项正常,相关外键也必须包 ...
- MYSQL之水平分区----MySQL partition分区I(5.1)
一. 分区的概念 二. 为什么使用分区?(优点) 三. 分区类型 四. 子分区 五. 对分区进行修改(增加.删除.分解.合并) 六 ...
随机推荐
- 3. Spring Boot Servlet
转自:https://blog.csdn.net/catoop/article/details/50501686
- HTML基础第三讲---字体
转自:https://i.cnblogs.com/posts?categoryid=1121494 同样我们在这里继续讲一下它的body,因为它能直观的让大家观察到你所学到的成果. 这一讲,我们来学习 ...
- visual studio code 中 debugger for chrome 插件的配置
安装 debugger for chrome 插件后,把默认的 launch.json 改成: { "name": "谷歌浏览器", "type&qu ...
- [selenium]-处理滚动条
转载于:https://blog.csdn.net/lilongsy/article/details/76142497 1.先把driver 强制转换为js,如下 JavascriptExecutor ...
- iOS_06_Mac os X
Mac os X 系统简介 * 苹果公司专门为苹果电脑设计的操作系统. * 以坚如磐石的UNIX为基础,既简单易用且功能强大. * x 是一个罗马数字正式的发音位“十”(ten),连续了先前的Mac ...
- jquery选择器里面也可以包含变量字符串
$("#"+uid).text(text);//jquery的选择器是可以放变量字符串的,同样是拼接字符串.
- [React Intl] Get locale value from intl injector
Get 'injectIntl' from 'react-intl', it is a high order componet. We need to wrap our component into ...
- 过滤input框中的特殊字符
两种方式,我觉得是一样的效果,请看: var charFilter1 = function(str) { var pattern = new RegExp("[`~!@#$^&*() ...
- [AngularFire2] Pagination
Let's see how to do pagination in Firebase: For the init loading, we only want 3 items: findLessonsK ...
- [Yarn] A JavaScript Package Manager
Yarn is a new JavaScript package manager that aims to be speedy, deterministic, and secure. See how ...