2016-11-24 9 views

答えて

1

を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() 
関連する問題