S3 Bucket .txt.gz通过PySpark复制

时间:2017-09-25 12:04:21

标签: python amazon-web-services amazon-s3 pyspark jupyter-notebook

我正在使用Python 2(在EMR上运行PySpark的Jupyter笔记本)。我正在尝试将一些数据作为数据框加载,以便映射/减少它并将其输出到我自己的S3存储桶。

我通常使用此命令:

df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('file:///home/path/datafolder/data2014/*.csv')

当文件在S3而不是我自己的存储桶(因为我不确定如何格式化.load命令)时,这是无法工作的,这是我现在的大多数用例。我的文件也是.csv和.txt.gz的混合,复制时我想用csv格式(解压缩)。

我在谷歌上看了一眼并在Python 2(Jupyter笔记本)中尝试了以下命令:

import os
import findspark
findspark.init('/usr/lib/spark/')

from pyspark import SparkContext, SQLContext
sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)

import sys

if sys.version_info[0] >= 3:
    from urllib.request import urlretrieve
else:
    from urllib import urlretrieve

# Get file from URL like this:
urlretrieve("https://s3.amazonaws.com/bucketname/path/path2/path3/path4/path3/results.txt.gz")

简单地输出:('/tmp/tmpmDB1EC.gz', <httplib.HTTPMessage instance at 0x7f54db894758>)所以我不确定现在该做什么。

我已经阅读了文档,并搜索了这个网站和Google的简单方法来形成df,但我被卡住了。我还读到了关于使用我的AWS密钥/密钥(我有),但我找不到一个可以遵循的例子。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您需要使用spark上下文

加载它
def __unicode__