Я использую HiveQL для работы с миллионами строк текстовых данных доменных имен, хранящихся в HDFS.Нижеследующее является выбранным вручную подмножеством для иллюстрации лексического разнообразия.Есть повторяющиеся записи.
dnsvm.mgmtsubnet.mgmtvcn.oraclevcn.com.
mgmtsubnet.mgmtvcn.oraclevcn.com.
asdf.mgmtvcn.oraclevcn.com.
dnsvm.mgmtsubnet.mgmtvcn.oraclevcn.com.
localhost.
a.localhost.
img.pulsemgr.com.
36.136.154.156.in-addr.arpa.
accounts.spotify.com.
_dmarc.ixia-devops.com.
&eventtype=close&reason=4&duration=35.
&eventtype=close&reason=3&duration=10336.
Я пытаюсь получить количество строк на основе последних двух уровней домена, где иногда отсутствует 2-й уровень (т. Е. localhost.
).Например:
domain_root count
oraclevcn.com. 4
localhost. 1
a.localhost. 1
pulsemgr.com. 1
in-addr.arpa. 1
spotify.com. 1
ixia-devops.com 1
Было бы неплохо также посмотреть, как отфильтровывать домены 2-го уровня.
Я не уверен, с чего начать.Я видел использование функции SPLIT()
, но она не может быть надежной, так как доменное имя может иметь много уровней, например: abcdefghi и т. Д.
Любые идеи являются реализациями приветствуются.