I have a need where I need to specify an empty string in a csv file, which also has some NULL values. Я пытаюсь использовать "" в качестве пустого значения и ничего, как null , мое ожидание было то, что nullvalue = none и emptyvalue = "" должен делать то, что я хочу, но оба интерпретируются как null .
Я пробовал все комбинации nullvalue и yetpal -wylobe
Код: Выделить всё
with open("/dbfs/tmp/c.csv", "w") as f:
f.write('''id,val
1,
2,""
3,str1
''')
for e, n in [('', None), ('', ''), (None, None), (None, '')]:
print(f'e: "{e}", n: "{n}"')
df = spark.read.csv('dbfs:/tmp/c.csv', header=True, emptyValue=e, nullValue=n).show()
< /code>
prints: < /p>
e: "", n: "None"
+---+-----+
| id| val|
+---+-----+
| 1| NULL|
| 2| NULL|
| 3| str1|
+---+-----+
e: "", n: ""
+---+-----+
| id| val|
+---+-----+
| 1| NULL|
| 2| NULL|
| 3| str1|
+---+-----+
e: "None", n: "None"
+---+-----+
| id| val|
+---+-----+
| 1| NULL|
| 2| NULL|
| 3| str1|
+---+-----+
e: "None", n: ""
+---+-----+
| id| val|
+---+-----+
| 1| NULL|
| 2| NULL|
| 3| str1|
+---+-----+
< /code>
ps: он работает в Scala, просто не в Python. Итак, я предполагаю, что это может иметь какое-то отношение к тому факту, что Print («true», если »« else »false,)
spark.read
.option("header", "true")
.option("emptyValue", "")
.option("nullValue", null)
.csv("dbfs:/tmp/c.csv").show()
< /code>
prints: < /p>
+---+-----+
| id| val|
+---+-----+
| 1| NULL|
| 2| |
| 3| str1|
+---+-----+
< /code>
Я прочитал: < /p>
- spark.read. Чтение пустой строки как нулевая, когда данные считываются из файла части
- Читать Spark CSV с пустыми значениями без преобразования в NULL, не отвечает на это, потому что:
- Spark CSV file read option to read blank/empty value from file as empty value only instead Null
- CSV Files
Подробнее здесь: https://stackoverflow.com/questions/797 ... in-pyspark