#scala #apache-spark
#scala #apache-spark
Вопрос:
- Я только что загрузил какой-то файл с сервера «hdfs dfs -get / user / hive / warehouse /»
- из загруженной папки файл не имеет расширения (я ожидал, что это файл parquet), и когда я использую команду «file *» для проверки, он показывает 000000_0: данные
- Я использую значение rddFromFile = spark.SparkContext.textFile(«путь»), и это показывает, что каждая строка не разделена или с «?» между каждым полем
Могу ли я узнать, что это за файл и как я должен прочитать его в надлежащую базу данных / фрейм данных? Я пытаюсь разделить («?»), но это просто не работает
Ответ №1:
Используйте parquet-tools
утилиту для просмотра данных.
hadoop jar ./parquet-tools-<VERSION>.jar cat <hdfs-location-file>
Проверьте эту ссылку для получения дополнительной информации о parquet tools. https://github.com/apache/parquet-mr/tree/master/parquet-tools
или
просто сделайте hdfs dfs -cat /user/hive/warehouse/000000_0
Если это паркет, то структура такая, как показано ниже.
Файл Parquet:
На высоком уровне файл parquet состоит из заголовка, одного или нескольких блоков и нижнего колонтитула. Формат файла parquet содержит 4-байтовое магическое число в (PAR1)
верхнем и нижнем колонтитулах. Это магическое число, указывающее, что файл находится в формате parquet.
Используйте orcfiledump
утилиту для просмотра содержимого Утилита ORC file dump поставляется с hive (0.11 или выше):
hive --orcfiledump <hdfs-location-of-orc-file>
Файл ORC:
ORC — это столбчатый формат файла. Вы можете визуализировать структуру файла ORC в виде области, которая разделена на верхний, основной и нижний колонтитулы.
Раздел заголовка: заголовок содержит текст ORC
на случай, если во время обработки потребуются какие-то инструменты для определения типа файла.
Кроме того, вы можете получать файлы в Windows, затем вы можете просто открывать файлы в редакторе (notepad ). Хотя это двоичный файл. Тем не менее, вы можете видеть в первой строке, как ORC
или PAR1
за которыми следуют некоторые другие зашифрованные символы.
Комментарии:
1. Привет, Виджай, спасибо за ответ, который я только что проверил, используя hdfs dfs -cat /user / hive / warehouse / 000000_0, и он выглядит как текстовый файл, а не как файл parquet, странно, что если я импортирую его как текстовый файл, разделитель равен «?», и я не смог разделить его на .split(«?»)