通过Matillion AWS在Jython中使用org.python.core.PyList
我正在Matillion ETL中运行一个用于红移的Python脚本组件。该组件正在使用Jython,代码如下。由于对象转换错误,context.updateGridVariable行出现错误 我想知道如何实例化org.python.core.PyList对象,以便填充它,而不是我得到的java.lang.String 输出 [u's3://bucket landingzone/inbox/dt_employees_20180614.csv'] java.lang.ClassCastException:java.lang.ClassCastException:java.lang.String不能强制转换为第26行的org.python.core.PyList 代码通过Matillion AWS在Jython中使用org.python.core.PyList,python,amazon-web-services,jython,matillion,Python,Amazon Web Services,Jython,Matillion,我正在Matillion ETL中运行一个用于红移的Python脚本组件。该组件正在使用Jython,代码如下。由于对象转换错误,context.updateGridVariable行出现错误 我想知道如何实例化org.python.core.PyList对象,以便填充它,而不是我得到的java.lang.String 输出 [u's3://bucket landingzone/inbox/dt_employees_20180614.csv'] java.lang.ClassCastExcept
import boto3
import json
s3 = boto3.resource('s3')
bucket = "bucket-landingzone"
name = "inbox/dt_employee_20180615"
file_list = []
manifest_object = s3.Object(bucket,name)
file_content = manifest_object.get()['Body'].read().decode('utf-8')
json_content = json.loads(file_content)
for entry in json_content['entries']:
for attribute, value in entry.iteritems():
if attribute == 'url':
file_list.append(value)
print(file_list)
context.updateGridVariable('manifest_entries', file_list)
print(context.getGridVariable('manifest_entries'))
要将字符串,
'manifest\u entries'
包装在列表中,只需将其用方括号括起来即可。我相信错误是指文件列表不是列表。这是updateGridVariable方法的语法:context.updateGridVariable('mygridvar',[['list','of'],['list','!']])manifest_entries'是网格变量的名称,而file_列表是内容。@DavidCharles您的评论让我找到了正确的方向。如果您想发布一个答案,说明这行代码中的括号将修复它,我将把它标记为答案。。。。文件\u list.append([value])