使用Scala中的AWS Glue在S3中加载CSV文件

时间:2019-11-27 16:59:32

标签: scala amazon-s3 aws-glue

这应该很容易... 对于我的AWS Glue作业,我想从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'].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()

但是我只想加载一个文件并像字符串数组一样对其进行操作。

谢谢!

2 个答案:

答案 0 :(得分:0)

如何将数据源转换为数据帧,然后在其上调用collect方法?

val  myArray = datasource.toDF().collect

答案 1 :(得分:0)

应该是这样的:

  1. 在Lambda中编写python代码以读取文件。
  2. 使用Scala代码创建您的Glue作业。
  3. 确保已启用触发器,该触发器将使用文件名调用Glue作业。