Ben python ile kıvılcım kullanıyorum.Bir csv dosyası yükledikten sonra, 22 basamak uzunluğunda olan bir csv dosyasında bir sütunu ayrıştırmak gerekiyordu. Bu sütunu ayrıştırmak için LongType() kullandım. Sütunu tanımlamak için map() işlevini kullandım. Pyspark'taki komutlarım aşağıdadır.veri türü
>>> test=sc.textFile("test.csv")
>>> header=test.first()
>>> schemaString = header.replace('"','')
>>> testfields = [StructField(field_name, StringType(), True) for field_name in schemaString.split(',')]
>>> testfields[5].dataType = LongType()
>>> testschema = StructType(testfields)
>>> testHeader = test.filter(lambda l: "test_date" in l)
>>> testNoHeader = test.subtract(testHeader)
>>> test_temp = testNoHeader.map(lambda k: k.split(",")).map(lambda
p:(p[0],p[1],p[2],p[3],p[4],***float(p[5].strip('"'))***,p[6],p[7]))
>>> test_temp.top(2)
Not: Ben de değişken test_temp yılında 'şamandıra' yerine 'uzun' ve 'bigint' denedi, ama kıvılcım hata oldu 'anahtar bulunamadı' Ve şudur çıkış
[('2012-03-14', '7', '1698.00', 'XYZ02abc008793060653', 'II93', ***8.27370028700801e+21*** , 'W0W0000000000007', '879870080088815007'), ('2002-03-14', '1', '999.00', 'ABC02E000050086941', 'II93', 8.37670028702205e+21, 'A0B0080000012523', '870870080000012421')]
aşağıdaki benim csv dosyasında değer olarak: 8.27370028700801e + 21 olduğunu Bunun dışında bir veri çerçevesi oluşturmak ve daha sonra sorgulandığında8.37670028702205e + 21
>>> test_df = sqlContext.createDataFrame(test_temp, testschema)
>>> test_df.registerTempTable("test")
>>> sqlContext.sql("SELECT test_column FROM test").show()
test_column
olup.
Yani, kıvılcım büyük numarası ayrıştırma bu sorunun çözümü için nasıl gerçekten