【问题标题】:how do I write a list of data to S3 in ORC format如何以 ORC 格式将数据列表写入 S3
【发布时间】:2019-09-23 07:57:14
【问题描述】:

我需要将 ORC 格式的文件直接写入 S3 存储桶。该文件将是对数据库的查询的结果。 我知道如何将 CSV 文件直接写入 S3,但找不到直接在 ORC 中写入的方法。有什么建议吗?

【问题讨论】:

  • 不清楚您是要求输出 ORC 的代码,还是要求写入 Amazon S3 的代码。你目前有可以在本地输出到 ORC 的代码吗?
  • 对不起,如果我不清楚。我将尝试澄清我知道如何将文件上传到 S3,但由于我正在编写的代码将在 lambda 函数中运行,我无法在本地写入文件然后上传它。我需要的是获取我检索到的查询结果,将其处理为 ORC 格式并将其写入 S3,所有这些都在内存中完成。如果我有本地存储,我想我会将文件写入本地存储,然后简单地上传它,但我不能。
  • 为什么“不能在本地写入文件然后上传”?如果文件小于500MB,可以在/tmp/创建文件,然后上传到S3。
  • 因为文件的大小取决于查询的结果,而且我不确定我是否可以假设它低于 500MB,所以我会仔细检查一下。谢谢!

标签: python amazon-s3 orc


【解决方案1】:
  1. save ORC content to file

根据链接文档使用默认值,因为没有可使用的代码示例

df = spark.read.load("examples/src/main/resources/users.parquet")
df.select("name", "favorite_color").write.save("namesAndFavColors.parquet")
  1. upload file
import boto3


# Create an S3 client
s3 = boto3.client('s3')

filename = 'file.txt'
bucket_name = 'my-bucket'

# Uploads the given file using a managed uploader, which will split up large
# files automatically and upload parts in parallel.
s3.upload_file(filename, bucket_name, filename)

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2014-12-01
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多