Я пытаюсь
def customFunction(rows):
for row in rows:
key = row.key #this value is boolean instead of actual value same with row["key"]
val = row.value #this value is boolean instead of actual value same with row["val"]
#do something with key value
spark = SparkSession \
.builder \
.appName("Python Spark SQL Hive integration example") \
.config("spark.sql.warehouse.dir", warehouse_location) \
.enableHiveSupport() \
.getOrCreate()
# spark is an existing SparkSession
spark.sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING) USING hive")
spark.sql("LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TABLE src")
# Queries are expressed in HiveQL
df = spark.sql("SELECT key, value FROM src")
# assumption that df row size is of billions
df.rdd.foreachPartition(customFunction)
Я получаю логические значения в ключе, переменные val в пользовательской функции. Как получить действительные значения атрибута строки?
Это выполняется на aws emr 5.29, python 2.7, python код выполняется через spark-submit