Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 通过模式匹配读取Spark中的拼花地板文件_Apache Spark_Parquet - Fatal编程技术网

Apache spark 通过模式匹配读取Spark中的拼花地板文件

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

我正在运行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: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)作为分区时会遇到问题,因为文件不在它的正下方