Pyspark.sql.DataFrameWriter.saveAsTable()
முதலில், எழுது.saveAsTable() செயல்பாட்டைப் பயன்படுத்தி ஏற்கனவே உள்ள PySpark DataFrame ஐ அட்டவணையில் எப்படி எழுதுவது என்று பார்ப்போம். டேட்டாஃப்ரேமை டேபிளில் எழுத, டேபிள் பெயர் மற்றும் மோட்கள், பார்ஷன்பை போன்ற பிற விருப்ப அளவுருக்கள் தேவை. இது ஒரு பார்க்வெட் கோப்பாக சேமிக்கப்படுகிறது.
தொடரியல்:
dataframe_obj.write.saveAsTable(பாதை/அட்டவணை_பெயர், முறை, பகிர்வு மூலம்,...)
- அட்டவணை_பெயர் என்பது dataframe_obj இலிருந்து உருவாக்கப்பட்ட அட்டவணையின் பெயர்.
- பயன்முறை அளவுருவைப் பயன்படுத்தி அட்டவணையின் தரவைச் சேர்க்கலாம்/மேலெழுதலாம்.
- இந்த வழங்கப்பட்ட நெடுவரிசைகளில் உள்ள மதிப்புகளின் அடிப்படையில் பகிர்வுகளை உருவாக்க partitionBy ஒற்றை/பல நெடுவரிசைகளை எடுக்கும்.
எடுத்துக்காட்டு 1:
5 வரிசைகள் மற்றும் 4 நெடுவரிசைகளுடன் PySpark DataFrame ஐ உருவாக்கவும். இந்த டேட்டாஃப்ரேமை 'Agri_Table1' என்ற அட்டவணையில் எழுதவும்.
பைஸ்பார்க் இறக்குமதி
pyspark.sql இலிருந்து SparkSession இறக்குமதி
linuxhint_spark_app = SparkSession.builder.appName( 'லினக்ஸ் குறிப்பு' ).getOrCreate()
5 வரிசைகள் மற்றும் 5 நெடுவரிசைகள் கொண்ட # விவசாய தரவு
அக்ரி =[{ 'மண்_வகை' : 'கருப்பு' , 'நீர்ப்பாசனம்_ இருப்பு' : 'இல்லை' , 'ஏக்கர்' : 2500 , 'மண்_நிலை' : 'உலர்ந்த' ,
'நாடு' : 'அமெரிக்கா' },
{ 'மண்_வகை' : 'கருப்பு' , 'நீர்ப்பாசனம்_ இருப்பு' : 'ஆம்' , 'ஏக்கர்' : 3500 , 'மண்_நிலை' : 'ஈரமான' ,
'நாடு' : 'இந்தியா' },
{ 'மண்_வகை' : 'சிவப்பு' , 'நீர்ப்பாசனம்_ இருப்பு' : 'ஆம்' , 'ஏக்கர்' : 210 , 'மண்_நிலை' : 'உலர்ந்த' ,
'நாடு' : 'யுகே' },
{ 'மண்_வகை' : 'மற்றவை' , 'நீர்ப்பாசனம்_ இருப்பு' : 'இல்லை' , 'ஏக்கர்' : 1000 , 'மண்_நிலை' : 'ஈரமான' ,
'நாடு' : 'அமெரிக்கா' },
{ 'மண்_வகை' : 'மணல்' , 'நீர்ப்பாசனம்_ இருப்பு' : 'இல்லை' , 'ஏக்கர்' : 500 , 'மண்_நிலை' : 'உலர்ந்த' ,
'நாடு' : 'இந்தியா' }]
# மேலே உள்ள தரவுகளிலிருந்து டேட்டாஃப்ரேமை உருவாக்கவும்
agri_df = linuxhint_spark_app.createDataFrame(agri)
agri_df.show()
# மேலே உள்ள DataFrame-ஐ அட்டவணையில் எழுதவும்.
agri_df.coalesce( 1 ).write.saveAsTable( 'அக்ரி_டேபிள்1' )
வெளியீடு:
முந்தைய PySpark டேட்டாவுடன் ஒரு பார்க்வெட் கோப்பு உருவாக்கப்பட்டிருப்பதைக் காணலாம்.
எடுத்துக்காட்டு 2:
முந்தைய டேட்டாஃப்ரேமைக் கருத்தில் கொண்டு, 'நாடு' நெடுவரிசையில் உள்ள மதிப்புகளின் அடிப்படையில் பதிவுகளைப் பிரிப்பதன் மூலம் 'Agri_Table2' ஐ அட்டவணையில் எழுதவும்.
# மேலே உள்ள DataFrameஐ அட்டவணையில் பகிர்வு மூலம் அளவுருவுடன் எழுதவும்agri_df.write.saveAsTable( 'Agri_Table2' ,பகிர்வு மூலம்=[ 'நாடு' ])
வெளியீடு:
'நாடு' நெடுவரிசையில் மூன்று தனித்துவமான மதிப்புகள் உள்ளன - 'இந்தியா', 'யுகே' மற்றும் 'அமெரிக்கா'. எனவே, மூன்று பகிர்வுகள் உருவாக்கப்படுகின்றன. ஒவ்வொரு பகிர்வும் பார்க்வெட் கோப்புகளை வைத்திருக்கிறது.
Pyspark.sql.DataFrameReader.table()
spark.read.table() செயல்பாட்டைப் பயன்படுத்தி PySpark DataFrame இல் அட்டவணையை ஏற்றுவோம். இது பாதை/அட்டவணை பெயர் என்ற ஒரே ஒரு அளவுருவை மட்டுமே எடுக்கும். இது நேரடியாக அட்டவணையை PySpark DataFrame இல் ஏற்றுகிறது மற்றும் PySpark DataFrame இல் பயன்படுத்தப்படும் அனைத்து SQL செயல்பாடுகளும் இந்த ஏற்றப்பட்ட DataFrame இல் பயன்படுத்தப்படலாம்.
தொடரியல்:
spark_app.read.table(பாதை/‘டேபிள்_பெயர்’)இந்தச் சூழ்நிலையில், PySpark DataFrame இலிருந்து உருவாக்கப்பட்ட முந்தைய அட்டவணையைப் பயன்படுத்துகிறோம். உங்கள் சூழலில் முந்தைய சூழ்நிலைக் குறியீடு துணுக்குகளைச் செயல்படுத்த வேண்டும் என்பதை உறுதிப்படுத்தவும்.
உதாரணமாக:
“loaded_data” என பெயரிடப்பட்ட DataFrame இல் “Agri_Table1” அட்டவணையை ஏற்றவும்.
loaded_data = linuxhint_spark_app.read.table( 'அக்ரி_டேபிள்1' )loaded_data.show()
வெளியீடு:
PySpark DataFrame இல் அட்டவணை ஏற்றப்பட்டிருப்பதைக் காணலாம்.
SQL வினவல்களை இயக்குதல்
இப்போது, spark.sql() செயல்பாட்டைப் பயன்படுத்தி ஏற்றப்பட்ட DataFrame இல் சில SQL வினவல்களை இயக்குகிறோம்.
# மேலே உள்ள அட்டவணையில் உள்ள அனைத்து நெடுவரிசைகளையும் காட்ட SELECT கட்டளையைப் பயன்படுத்தவும்.linuxhint_spark_app.sql( 'Agri_Table1 லிருந்து * தேர்ந்தெடு' ).show()
# எங்கே உட்பிரிவு
linuxhint_spark_app.sql( 'Agri_Table1 இலிருந்து * தேர்ந்தெடுக்கவும் மண்_நிலை='உலர்' ' ).show()
linuxhint_spark_app.sql( 'Agri_Table1 இலிருந்து * தேர்ந்தெடுங்கள் எங்கே ஏக்கர் > 2000' ).show()
வெளியீடு:
- முதல் வினவல் DataFrame இலிருந்து அனைத்து நெடுவரிசைகளையும் பதிவுகளையும் காட்டுகிறது.
- இரண்டாவது வினவல் 'மண்_நிலை' நெடுவரிசையின் அடிப்படையில் பதிவுகளைக் காட்டுகிறது. 'உலர்' உறுப்புடன் மூன்று பதிவுகள் மட்டுமே உள்ளன.
- கடைசி வினவல் 2000க்கும் அதிகமான 'ஏக்கர்' கொண்ட இரண்டு பதிவுகளை வழங்குகிறது.
Pyspark.sql.DataFrameWriter.insertInto()
insertInto() செயல்பாட்டைப் பயன்படுத்தி, DataFrame ஐ ஏற்கனவே உள்ள அட்டவணையில் சேர்க்கலாம். நெடுவரிசைப் பெயர்களை வரையறுத்து, அதை அட்டவணையில் செருகுவதற்கு selectExpr() உடன் இந்தச் செயல்பாட்டைப் பயன்படுத்தலாம். இந்த செயல்பாடு tableName ஐ ஒரு அளவுருவாகவும் எடுத்துக்கொள்கிறது.
தொடரியல்:
DataFrame_obj.write.insertInto('Table_name')இந்தச் சூழ்நிலையில், PySpark DataFrame இலிருந்து உருவாக்கப்பட்ட முந்தைய அட்டவணையைப் பயன்படுத்துகிறோம். உங்கள் சூழலில் முந்தைய சூழ்நிலைக் குறியீடு துணுக்குகளைச் செயல்படுத்த வேண்டும் என்பதை உறுதிப்படுத்தவும்.
உதாரணமாக:
இரண்டு பதிவுகளுடன் ஒரு புதிய DataFrame ஐ உருவாக்கி அவற்றை 'Agri_Table1' அட்டவணையில் செருகவும்.
பைஸ்பார்க் இறக்குமதிpyspark.sql இலிருந்து SparkSession இறக்குமதி
linuxhint_spark_app = SparkSession.builder.appName( 'லினக்ஸ் குறிப்பு' ).getOrCreate()
# 2 வரிசைகள் கொண்ட விவசாயத் தரவு
அக்ரி =[{ 'மண்_வகை' : 'மணல்' , 'நீர்ப்பாசனம்_ இருப்பு' : 'இல்லை' , 'ஏக்கர்' : 2500 , 'மண்_நிலை' : 'உலர்ந்த' ,
'நாடு' : 'அமெரிக்கா' },
{ 'மண்_வகை' : 'மணல்' , 'நீர்ப்பாசனம்_ இருப்பு' : 'இல்லை' , 'ஏக்கர்' : 1200 , 'மண்_நிலை' : 'ஈரமான' ,
'நாடு' : 'ஜப்பான்' }]
# மேலே உள்ள தரவுகளிலிருந்து டேட்டாஃப்ரேமை உருவாக்கவும்
agri_df2 = linuxhint_spark_app.createDataFrame(agri)
agri_df2.show()
# write.insertInto()
agri_df2.selectExpr( 'ஏக்கர்' , 'நாடு' , 'நீர்ப்பாசனம்_ இருப்பு' , 'மண்_வகை' ,
'மண்_நிலை' ).write.insertInto( 'அக்ரி_டேபிள்1' )
# இறுதி வேளாண்_அட்டவணை 1 ஐக் காட்டு
linuxhint_spark_app.sql( 'Agri_Table1 லிருந்து * தேர்ந்தெடு' ).show()
வெளியீடு:
இப்போது, DataFrame இல் உள்ள மொத்த வரிசைகளின் எண்ணிக்கை 7 ஆகும்.
முடிவுரை
எழுது.saveAsTable() செயல்பாட்டைப் பயன்படுத்தி PySpark DataFrame ஐ அட்டவணையில் எப்படி எழுதுவது என்பதை இப்போது நீங்கள் புரிந்துகொள்கிறீர்கள். இது அட்டவணையின் பெயர் மற்றும் பிற விருப்ப அளவுருக்களை எடுக்கும். பின்னர், spark.read.table() செயல்பாட்டைப் பயன்படுத்தி இந்த அட்டவணையை PySpark DataFrame இல் ஏற்றினோம். இது பாதை/அட்டவணை பெயர் என்ற ஒரே ஒரு அளவுருவை மட்டுமே எடுக்கும். ஏற்கனவே உள்ள அட்டவணையில் புதிய DataFrame ஐ சேர்க்க விரும்பினால், insertInto() செயல்பாட்டைப் பயன்படுத்தவும்.