1 позиционный аргумент, но 2 были заданы GlueContext разделить строки DynamicFrameCollection - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть этот код, чтобы получить данные из таблицы и разделить их, используя определенное поле

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

df = glueContext.create_dynamic_frame.from_catalog(database = "mydb", table_name = "mytable")

collection=df.split_rows({"split_field": {"=": "value"}},"dfSplit","dfOthers")
print("Collection keys: "+str(list(collection.keys())[0]))
print("Colleciton splitted values: "+str(collection.values(collection.keys())))
print("Colleciton splitted values: "+str(collection.values('dfSplit')))

Я пробовал набор параметров для печати значений в одном из фреймов данных в коллекции. Несмотря на просмотр ключей, которые я установил, я не могу прочитать значения. Я пробовал в разных прогонах последние два ряда. Но оба возвращают:

Keys take 1 positional argument but 2 were given

Я думаю, что эта ошибка связана с созданием экземпляра объекта, но я не понимаю, почему следует создавать, когда значения являются функцией, как keys, и keys funciton работает в печати и не возвращает ошибку.

Я использую это do c, но только говорит, что функция значений -> Возвращает список значения DynamicFrame в этой коллекции.

1 Ответ

0 голосов
/ 10 февраля 2020

Наконец, благодаря @blackbishop я нашел решение

myCollection=new.values()
df=list(myCollection)[0]

Используя эти строки, я смог получить значения DynamicFrameCollection. Затем, превратив их в список и проиндексировав первый, я отфильтрую результаты, используя метод split.

...