Apache spark 通过模式匹配读取Spark中的拼花地板文件
我正在运行Spark 1.3.0,希望读取大量基于模式匹配的拼花文件。拼花地板文件基本上是配置单元数据库的底层文件,我只想读取一些文件(跨不同文件夹)。文件夹结构是Apache spark 通过模式匹配读取Spark中的拼花地板文件,apache-spark,parquet,Apache Spark,Parquet,我正在运行Spark 1.3.0,希望读取大量基于模式匹配的拼花文件。拼花地板文件基本上是配置单元数据库的底层文件,我只想读取一些文件(跨不同文件夹)。文件夹结构是 hdfs://myhost:8020/user/hive/warehouse/db/blogs/some/meta/files/ hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160101/01/file1.parq hdfs://myhost:8
hdfs://myhost:8020/user/hive/warehouse/db/blogs/some/meta/files/
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160101/01/file1.parq
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160101/02/file2.parq
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160103/01/file3.parq
差不多
val v1 = sqlContext.parquetFile("hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd={[0-9]*}")
我想忽略元文件,只加载日期文件夹中的拼花地板文件。这可能吗?您可以像这样在拼花地板中使用通配符(适用于1.5但未在1.3中测试): 如果不起作用,您可以做的另一件事是在yymmdd之前使用带有分区的hive创建外部表,并使用以下命令从该表读取拼花:
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
sqlContext.sql("SELECT FROM ...")
不能使用正则表达式
我还认为你的文件夹结构有问题。应该是
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=150204/
或
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=150204/part=01
而不是:
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=150204/1
因为它们是您使用它的方式,所以我认为您使用文件夹名称(yymmdd)作为分区时会遇到问题,因为文件不直接在它下面您可以像这样在拼花地板中使用通配符(适用于1.5但未在1.3上测试): 如果不起作用,您可以做的另一件事是在yymmdd之前使用带有分区的hive创建外部表,并使用以下命令从该表读取拼花:
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
sqlContext.sql("SELECT FROM ...")
不能使用正则表达式
我还认为你的文件夹结构有问题。应该是
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=150204/
或
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=150204/part=01
而不是:
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=150204/1
因为它们是您使用它的方式,所以我认为您在使用文件夹名(yymmdd)作为分区时会遇到问题,因为文件不在它的正下方