如何配置aws粘合作业以使用胶水数据表定义中的列类型?

时间:2018-01-10 14:20:21

标签: amazon-web-services apache-spark amazon-s3 aws-glue

考虑以下aws胶水作业代码:

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue.dynamicframe import DynamicFrame
from pyspark.sql import SparkSession
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

medicare_dynamicframe = glueContext.create_dynamic_frame.from_catalog(
    database = "my_database",
    table_name = "my_table")
medicare_dynamicframe.printSchema()

job.commit()

打印出类似的内容(请注意price_key 在第二个位置):

root
|-- day_key: string
...
|-- price_key: string

虽然数据池中的my_table定义为day_keyint(第一列),price_keydecimal(25,0)(第二列)。

可能是我错了,但我从源码中发现aws glue使用表和数据库来获取数据的s3路径但完全忽略任何类型定义。可能适用于某些数据格式,例如parquet这是正常的,但不适用于csv

如何使用csv配置aws glue从datalake表定义为动态帧设置模式?

0 个答案:

没有答案