Как мне прочитать файл без расширения?

#scala #apache-spark

#scala #apache-spark

Вопрос:

  1. Я только что загрузил какой-то файл с сервера «hdfs dfs -get / user / hive / warehouse /»
  2. из загруженной папки файл не имеет расширения (я ожидал, что это файл parquet), и когда я использую команду «file *» для проверки, он показывает 000000_0: данные
  3. Я использую значение 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(«?»)