У меня есть два файла данных, как показано ниже:
course.txt
id,course
1,Hadoop
2,Spark
3,HBase
5,Impala
Fee.txt
id,amount
2,3900
3,4200
4,2900
Мне нужно перечислить всю информацию о курсе с их оплатой:
sqlContext.sql("select c.id, c.course, f.amount from course c left outer join fee f on f.id = c.id").show
+---+------+------+
| id|course|amount|
+---+------+------+
| 1|Hadoop| null|
| 2| Spark|3900.0|
| 3| HBase|4200.0|
| 5|Impala| null|
+---+------+------+
если курс не указан в таблице Fee, то вместо того, чтобы показывать null, я хочу показать «N/A».
Я пробовал следующее и еще не получил:
команда 1:
sqlContext.sql("select c.id, c.course, ifnull(f.amount, 'N/A') from course c left outer join fee f on f.id = c.id").show
Ошибка: org.apache.spark.sql.AnalysisException: неопределенная функция ifnull; строка 1 поз. 40
команда 2:
sqlContext.sql("select c.id, c.course, isnull(f.amount, 'N/A') from course c left outer join fee f on f.id = c.id").show
Ошибка: org.apache.spark.sql.AnalysisException: нет обработчика для класса Hive udf org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNull, потому что: оператор «IS NULL» принимает только 1 аргумент.. ; строка 1 поз. 40
Как правильно справиться с этим в sqlContext в Scala? Большое спасибо.