在R中从AWS S3读取gzip文件的内容

菲尔斯老板

我正在尝试从S3读取gzip压缩的csv文件

鉴于我已经有一个我的数据列表

> MyKeys
[1] "2020/07/25/21/0001_part_00.gz" "2020/07/25/22/0000_part_00.gz" "2020/07/25/22/0001_part_00.gz" "2020/07/25/23/0000_part_00.gz" "2020/07/25/23/0001_part_00.gz"

使用

x<-get_object(MyKeys[1], bucket = bucket)

它返回

str(x)
 raw [1:42017043] 1f 8b 08 00 ...

我试着用

rawToChar(x)
gunzip(x, remove=FALSE)
read.table(rawConnection(get_object(MyKeys[1], bucket = bucket)))
read_delim(gzfile(get_object(touse[1], bucket = bucket)), ",", escape_double = FALSE, trim_ws = TRUE)

还有一些我不记得的技巧。

而且这些都没有用..我在这里迷路了。

菲尔斯老板

好吧,毕竟我设法找到了解决方案。

df <- get_object(key, bucket = bucket) %>%
        rawConnection %>% 
        gzcon %>% 
        read_delim( "|", escape_double = FALSE,  trim_ws = TRUE, col_names = FALSE)

为任何发现这种麻烦的人解释一下

方法Get_object是主要的S3方法。使用rawConnection,您可以流式传输gzcon,这是读取和解压缩Gzip文件的方式(某种比特流,我不知道为什么会这样...)finaly read_delim这对任何人都不会有任何误解。它是legen ...等等...这里有个窍门!使用RawConnection R时,会在内部为文件分配向量。并一直呆在那里直到您将其关闭。通常,您创建一个对象然后将其关闭

x<- rawConnection(<args>)
close(x)

但是在这种情况下,它是使用magrittr的'%>%'动态创建的,因此我没有引用。
如果您执行的操作与我相同,并且您正在循环读取数千个文件中的几个月数据,那么您将收到错误消息

所有连接都在使用中

不用担心。Rawconnection存储128个文件...顶部..因此,如果您存储到本地文件或变量中并使用“垃圾收集器方法” closeAllConnections(),它将所有存储的文件作为rawconnections擦除

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从AWS S3读取多个文件

有什么方法可以从AWS Step Function读取S3文件的内容吗?

使用预签名URL从AWS s3读取文件的内容

AWS Lambda @ edge。如何从S3读取HTML文件并将内容放入响应正文

如何使用python从S3存储桶中读取.txt文件并查看内容?

我如何在Amazon S3中读取文件的内容

如何读取目录中的多个文件,这些文件都是带有Airflow S3 Hook或boto3的csv.gzip?

使用具有范围的GetObjectRequest读取AWS S3 GZIP对象

使用Java Lambda在AWS S3上读取文件

pyspark 从 AWS S3 读取文件不起作用

如何使用 mdfreader 从 AWS S3 读取 .dat 文件

如何从 AWS S3 嵌套目录读取泡菜文件?

无法在 Python 3 中从 S3 读取 PNG 文件?

AWS s3的“ head”命令可查看文件内容

AWS S3 Gzip非常慢

如何使用Python在myBucket中上传CSV文件并在S3 AWS中读取文件

如何从BufferedReader中S3中读取文件?

使用org.apache.hadoop:hadoop-aws从pyspark中的s3中读取文件

如何从Web上的Python Flask中的AWS s3中读取文件

如何在Python中从S3读取Avro文件?

在Spark中从HDFS或S3读取边缘DB文件

如何在EMR中从s3读取文件?

如何在S3中读取ElasticSearch快照文件?

无法在S3中设置文件内容类型

如何使用 Lambda 和 Python 在 AWS s3 中读取和覆盖文件?

读取公共 AWS S3 存储桶中的文件计数

如何在Spark数据框中从AWS S3读取多个文件?

如何从AWS Lambda的s3存储桶中读取csv文件?

AWS:使用 lambda 函数读取 Amazon S3 存储桶中的所有文件