使用Scala中的AWS胶水在S3中加载CSV文件
这应该很容易。。。 对于我的AWS粘合作业,我想从S3上的CSV文件加载配置设置。通过这种方式,我的lambda函数可以触发作业并将文件名作为参数发送。在Python中,我可以轻松做到这一点:使用Scala中的AWS胶水在S3中加载CSV文件,scala,amazon-s3,aws-glue,Scala,Amazon S3,Aws Glue,这应该很容易。。。 对于我的AWS粘合作业,我想从S3上的CSV文件加载配置设置。通过这种方式,我的lambda函数可以触发作业并将文件名作为参数发送。在Python中,我可以轻松做到这一点: s3 = boto3.resource('s3') bucket = s3.Bucket(<my bucket name>) obj = s3.Object(<my bucket name>,<file location>) data = obj.get()['Body
s3 = boto3.resource('s3')
bucket = s3.Bucket(<my bucket name>)
obj = s3.Object(<my bucket name>,<file location>)
data = obj.get()['Body'].read().decode('utf-8')
s3=boto3.resource('s3'))
bucket=s3.bucket()
obj=s3.Object(,)
data=obj.get()['Body'].read().decode('utf-8')
在Scala中,我找不到任何与boto3库等价的东西。我尝试过以下getSourceWithFormat函数:
var datasource = glueContext.getSourceWithFormat("s3", JsonOptions(Map("paths" -> Set(<file folder name>)),
Map("exclusions" -> <file patterns to exclude>)),
format = "csv", formatOptions = JsonOptions(Map("separator" -> "\t"),Map("header" -> true)))
.getDynamicFrame()
var datasource=glueContext.getSourceWithFormat(“s3”,JsonOptions(映射(“路径”->Set()),
地图(不包括“->),
format=“csv”,formatOptions=JsonOptions(映射(“分隔符”->“\t”),映射(“标题”->true)))
.getDynamicFrame()
但我只想加载一个文件,并像处理字符串数组一样处理它
谢谢大家! 如何将数据源转换为数据帧,然后对其调用collect方法
val myArray = datasource.toDF().collect
应该是这样的:
var datasource = glueContext.getSourceWithFormat("s3", JsonOptions(Map("paths" -> Set(<file folder name>)),
Map("exclusions" -> <file patterns to exclude>)),
format = "csv", formatOptions = JsonOptions(Map("separator" -> "\t"),Map("header" -> true)))
.getDynamicFrame()
像这样的:?您可以查找Java/Scala S3库,它们将允许您访问bucket中的文件。您可以根据格式读取文件:文本、csv、二进制、json等。您可以使用(我是其中的一员)将S3对象作为Akka Stream
源文件读取,知道Akka提供了一个CSV框架。您可以用python编写lambda,如果没有找到等效的scala代码,可以通过lambda触发器调用scala中的粘合作业。谢谢@bdcloud。“这就是我最后要做的事。”道格拉斯达利,如果有帮助,请将此标记为已回答。