我在目录s3://mybucket/my/directory/
的s3上有一些制表符分隔的数据。现在如何读取pyspark中s3的表格数据?
,我告诉我要使用\t
作为分隔符读取只是一个文件中像这样pyspark:
from pyspark import SparkContext
from pyspark.sql import HiveContext, SQLContext, Row
from pyspark.sql.types import *
from datetime import datetime
from pyspark.sql.functions import col, date_sub, log, mean, to_date, udf, unix_timestamp
from pyspark.sql.window import Window
from pyspark.sql import DataFrame
sc =SparkContext()
sc.setLogLevel("DEBUG")
sqlContext = SQLContext(sc)
indata_creds = sqlContext.read.load('s3://mybucket/my/directory/onefile.txt').option("delimiter", "\t")
但它告诉我:assertion failed: No predefined schema found, and no Parquet data files or summary files found under s3://mybucket/my/directory/onefile.txt
怎么办我告诉pyspark,这是一个制表符分隔的文件,而不是一个镶木地板文件?
或者,有没有一种更简单的方法来一次读取整个目录中的这些文件?
谢谢。
- 编辑:我使用pyspark版本1.6.1 *
的文件是在S3上,所以我不能够使用通常的:
indata_creds = sqlContext.read.text('s3://mybucket/my/directory/')
,因为当我尝试那我得到java.io.IOException: No input paths specified in job
其他我可以尝试吗?
没有抱歉,这不起作用。首先,我得到'AttributeError:'DataFrameReader'对象没有属性'csv',你的代码在上面。并且,当我尝试执行'indata_creds = spark_session.read.option('sep','\ t').load('s3://mybucket/my/directory/onefile.txt')'我得到同样的错误我发布了关于镶木地板文件。 – Sother
可能有其他的选择:1)有没有办法将所有这些文本文件压缩成s3上的几个实木复合地板文件? 2)是否有一种方法可以一次读取整个目录? – Sother
查看我的编辑... –