相关疑难解决方法(0)

如何使用boto将文件上传到S3存储桶中的目录

我想使用python在s3存储桶中复制一个文件.

例如:我有桶名=测试.在存储桶中,我有2个文件夹名称"转储"和"输入".现在我想使用python将文件从本地目录复制到S3"dump"文件夹...任何人都可以帮助我吗?

python amazon-s3 boto amazon-web-services

90
推荐指数
10
解决办法
17万
查看次数

从Internet下载文件到S3存储桶

我想直接抓取互联网文件并将其粘贴到S3存储桶中,然后将其复制到PIG集群.由于文件的大小和我不太好的互联网连接,首先将文件下载到我的电脑上,然后将其上传到亚马逊可能不是一个选择.

有什么方法可以抓住互联网文件并将其直接插入S3吗?

amazon-s3 amazon-web-services

23
推荐指数
4
解决办法
9754
查看次数

使用python将csv转换为镶木地板文件

我想将.csv文件转换为.parquet文件.
csv文件(Temp.csv)具有以下格式

1,Jon,Doe,Denver
Run Code Online (Sandbox Code Playgroud)

我使用以下python代码将其转换为镶木地板

from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
import os

if __name__ == "__main__":
    sc = SparkContext(appName="CSV2Parquet")
    sqlContext = SQLContext(sc)

    schema = StructType([
            StructField("col1", IntegerType(), True),
            StructField("col2", StringType(), True),
            StructField("col3", StringType(), True),
            StructField("col4", StringType(), True)])
    dirname = os.path.dirname(os.path.abspath(__file__))
    csvfilename = os.path.join(dirname,'Temp.csv')    
    rdd = sc.textFile(csvfilename).map(lambda line: line.split(","))
    df = sqlContext.createDataFrame(rdd, schema)
    parquetfilename = os.path.join(dirname,'output.parquet')    
    df.write.mode('overwrite').parquet(parquetfilename)
Run Code Online (Sandbox Code Playgroud)

结果只是一个名为的文件夹,output.parquet而不是我正在寻找的镶木地板文件,然后在控制台上出现以下错误.

CSV到Parquet错误

我也尝试运行以下代码来面对类似的问题.

from pyspark.sql import SparkSession
import os

spark = SparkSession \
    .builder \ …
Run Code Online (Sandbox Code Playgroud)

python csv parquet

19
推荐指数
5
解决办法
2万
查看次数

PyArrow:增量使用 ParquetWriter,无需将整个数据集保留在内存中(大于内存 parquet 文件)

我正在尝试将一个大的镶木地板文件写入磁盘(大于内存)。我天真地认为我可以聪明地使用 ParquetWriter 和 write_table 增量写入文件,如下所示(POC):

import pyarrow as pa
import pyarrow.parquet as pq
import pickle
import time

arrow_schema = pickle.load(open('schema.pickle', 'rb'))
rows_dataframe = pickle.load(open('rows.pickle', 'rb'))

output_file = 'test.parq'

with pq.ParquetWriter(
                output_file,
                arrow_schema,
                compression='snappy',
                allow_truncated_timestamps=True,
                version='2.0',  # Highest available schema
                data_page_version='2.0',  # Highest available schema
        ) as writer:
            for rows_dataframe in function_that_yields_data()
                writer.write_table(
                    pa.Table.from_pydict(
                            rows_dataframe,
                            arrow_schema
                    )
                )
Run Code Online (Sandbox Code Playgroud)

但即使我生成了块(比如我的例子中的 10000 行)并使用write_table它仍然将整个数据集保留在内存中。

事实证明,ParquetWriter 将整个数据集保留在内存中,同时增量写入磁盘

是否有办法强制 ParquetWriter 不将整个数据集保留在内存中,或者出于充分的原因根本不可能?

python parquet apache-arrow pyarrow

5
推荐指数
1
解决办法
2056
查看次数