Обнаружение раздела в искре не показывает правильный номер раздела - PullRequest
0 голосов
/ 05 февраля 2019

Обнаружение Spark-раздела не разбивает данные на основе структуры папок

У меня есть каталог с именем list, внутри которого у меня есть папка для каждой страны с меткой, например, COUNTRY = US и т. Д., Внутри этой страны яиметь область вызова папки с меткой ike REGION = NORTH, а внутри папки региона есть несколько CSV-файлов.

Folder structure

Теперь я хотел бы прочитать эти данные в Spark, используя API DataFrame Spark 2.3, и при чтении данных я использую опцию base-path,так что искра автоматически обнаружит подчеркивание раздела.

, так как у меня есть 2 папки на уровне страны, и внутри одной страны у меня есть 5 регионов, а внутри второй страны у меня есть 2 региона.итого у меня 7 регионов.поэтому мой фрейм данных должен показывать число разделов как 7. скорее фрейм данных показывает номер раздела как 5.

вот код для вашей справки

    start = time.time()
path = "D:\\Sonika\\Propcount\\*\\*\\*.txt"
df_probe_count_base = spark.read.option("header", "true")\
    .option("basePath", "D:\\Sonika\\Propcount")\
    .option("Delimiter", ",").csv(path)

print("df_probe_count_base",df_probe_count_base.rdd.getNumPartitions())
end = time.time()

также я пытаюсь увидетькакая строка принадлежит какому разделу и удивляет, обнаружив, что она случайным образом распределяет дату на 4 раздела.то есть в одном разделе я вижу, что строки принадлежат двум разным странам с двумя разными регионами

print(df_probe_count_base.rdd.glom().collect())

[
        Row(_c0='txt', _c1='RowNumber', COUNTRY='CAN', REGION='Reg2'), 
        Row(_c0='0', _c1='1', COUNTRY='CAN', REGION='Reg2'), 
        Row(_c0='0', _c1='2', COUNTRY='CAN', REGION='Reg2'), 
        Row(_c0='0', _c1='3', COUNTRY='CAN', REGION='Reg2'),
        Row(_c0='0', _c1='4', COUNTRY='CAN', REGION='Reg2'),
        Row(_c0='0', _c1='5', COUNTRY='CAN', REGION='Reg2'), 
        Row(_c0='0', _c1='6', COUNTRY='CAN', REGION='Reg2'), 
        Row(_c0='0', _c1='7', COUNTRY='CAN', REGION='Reg2'), 
        Row(_c0='0', _c1='8', COUNTRY='CAN', REGION='Reg2'), 
        Row(_c0='0', _c1='9', COUNTRY='CAN', REGION='Reg2'),
        Row(_c0='0', _c1='10', COUNTRY='CAN', REGION='Reg2'), 
        Row(_c0='txt', _c1='RowNumber', COUNTRY='ABC', REGION='Reg1'), 
        Row(_c0='0', _c1='1', COUNTRY='ABC', REGION='Reg1'), 
        Row(_c0='0', _c1='2', COUNTRY='ABC', REGION='Reg1'), 
        Row(_c0='0', _c1='3', COUNTRY='ABC', REGION='Reg1'), 
        Row(_c0='0', _c1='4', COUNTRY='ABC', REGION='Reg1'),
        Row(_c0='0', _c1='5', COUNTRY='ABC', REGION='Reg1'), 
        Row(_c0='0', _c1='6', COUNTRY='ABC', REGION='Reg1'), 
        Row(_c0='0', _c1='7', COUNTRY='ABC', REGION='Reg1'), 
        Row(_c0='0', _c1='8', COUNTRY='ABC', REGION='Reg1'), 
        Row(_c0='0', _c1='9', COUNTRY='ABC', REGION='Reg1'), 
        Row(_c0='0', _c1='10', COUNTRY='ABC', REGION='Reg1')
    ]

Это отличается от раздела куста, потому что в HIVE у вас будет один файл для этого раздела, как в данном случаеу вас может быть несколько файлов

может кто-нибудь предложить, пожалуйста,

  • , как обнаружение разделов работает в spark 2.3 с файлом CSV
  • , почему существует 4раздел не 7 (к вашему сведению, у меня 4 ядра в моей машине)
  • вся логика состоит в том, что у меня есть 2 разных фрейма данных с одинаковым уровнем секционированных данных, позже я хотел бы присоединиться к 2фрейм данных на основе страны, региона и одного первичного ключа.поэтому я хотел бы разделить данные на основе страны и региона, чтобы избежать перетасовки между узлами (хотя перестановка внутри узла может произойти, но меня это не беспокоит).пожалуйста, дайте мне знать, если это понимание верно или нет
...