我只能通过胶水和通过Pyspark代码访问S3文件,如下所示:
lastModifyingUser
如何查找具有特定价值的文件? (例如模拟cat和grep)
目标是-如果我搜索单词s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
-给我包含该单词的S3文件列表。文件已压缩。
答案 0 :(得分:1)
在pyspark中,我们可以搜索文件中的内容,如下所示:
from pyspark.sql.functions import input_file_name
input_path = "data/" # This can be a S3 location
data = spark.read.text(input_path).select(input_file_name(), "value").rdd
df = spark.createDataFrame(data)
df2 = df.filter(df["value"].contains("F1"))
>>> df.show()
+--------------------+--------------------+
| input_file_name()| value|
+--------------------+--------------------+
|file:///Users/hbo...|"`F1`","`F2`","`F3`"|
|file:///Users/hbo...| "a","b","c"'|
|file:///Users/hbo...| "d","e","f"|
|file:///Users/hbo...| "F1","F2","F3"|
|file:///Users/hbo...| "a","b","c"|
|file:///Users/hbo...| "d","e","f"|
+--------------------+--------------------+
>>> df2 = df.filter(df["value"].contains("F1"))
>>> df2.show()
+--------------------+--------------------+
| input_file_name()| value|
+--------------------+--------------------+
|file:///Users/hbo...|"`F1`","`F2`","`F3`"|
|file:///Users/hbo...| "F1","F2","F3"|
+--------------------+--------------------+
让我知道这是否对您有用。
答案 1 :(得分:0)
即使您只能使用boto
而不是AWS CLI,您的可用功能也将相同(有关CLI和boto之间的区别,请参见this question)。
how to grep files in S3中还存在使用CLI的其他问题,您的方法必须类似:
grep
)或代码逻辑来搜索文件。 cat
比grep
更简单:获取目标,通过客户端获取,然后通过管道传输到标准输出。