1
スパークSQLでBIGINTの表現に私は、文字列からSPARKのSQL(hiveish)を使用して、長い表現にはIPv4のIPアドレスを変換するにはどうすればよい
スパークSQLでBIGINTの表現に私は、文字列からSPARKのSQL(hiveish)を使用して、長い表現にはIPv4のIPアドレスを変換するにはどうすればよい
をIPv4の文字列を変換する。これは、乗算を使用して行うことができます。
sqlContext.sql("""SELECT
(cast(split(l.klientip,'\\.')[0] as bigint) * 16777216)
+ (cast(split(l.klientip,'\\.')[1] as bigint) * 65536)
+ (cast(split(l.klientip,'\\.')[2] as bigint) * 256)
+ (cast(split(l.klientip,'\\.')[3] as bigint)) ip_add_int
from loggik l
""").show()
またはビットシフト(乗算と同じ)
sqlContext.sql("""SELECT
(shiftLeft(cast(split(l.klientip,'\\.')[0] as bigint),24)
+shiftLeft(cast(split(l.klientip,'\\.')[1] as bigint),16)
+shiftLeft(cast(split(l.klientip,'\\.')[2] as bigint),8)
+cast(split(l.klientip,'\\.')[3] as bigint)) ip_shift_int
from loggik l
""").show()