J'ai écrit un script dans AWS Glue pour lire un fichier CSV à partir d'AWS S3, en appliquant une vérification nulle sur quelques champs et en stockant les résultats dans S3 comme nouveau fichier. Le problème est quand il rencontre un champ de type String si la valeur est nulle, il est converti en chaîne vide. Mais je ne veux pas que cette conversion se produise. Pour tous les autres types de données, cela fonctionne correctement.Spark SQL: les valeurs null sont converties en chaîne vide dans le fichier de résultats
est le script ici qui est écrit jusqu'à présent:
glueContext = GlueContext(SparkContext.getOrCreate())
spark = glueContext.spark_session
# s3 output directory
output_dir = "s3://aws-glue-scripts/..."
# Data Catalog: database and table name
db_name = "sampledb"
tbl_name = "mytable"
datasource = glueContext.create_dynamic_frame.from_catalog(database = db_name, table_name = tbl_name)
datasource_df = datasource.toDF()
datasource_df.createOrReplaceTempView("myNewTable")
datasource_sql_df = spark.sql("SELECT * FROM myNewTable WHERE name IS NULL")
datasource_sql_df.show()
datasource_sql_dyf = DynamicFrame.fromDF(datasource_sql_df, glueContext, "datasource_sql_dyf")
glueContext.write_dynamic_frame.from_options(frame = datasource_sql_dyf,
connection_type = "s3", connection_options = {"path": output_dir}, format = "json")
Quelqu'un peut-il s'il vous plaît suggérer comment se débarrasser de ce problème?
Merci.