PySpark Read JSON()

Pyspark Read Json



בזמן העבודה עם PySpark DataFrames, יש לאחסן אותם ב-PySpark DataFrame אם ברצונך לעבד את נתוני ה-JSON. לאחר אחסון ב-DataFrame, נוכל ליישם את הפעולות והשיטות השונות על הנתונים. כמו כן, יש כל כך הרבה יתרונות אם נמיר JSON ל-PySpark DataFrame מכיוון שזה פשוט ונוכל לשנות/לחלק את הנתונים בצורה פשוטה יותר.

נושא התוכן:

קריאת JSON לתוך PySpark DataFrame באמצעות Pandas.read_json()







קריאת JSON ל-PySpark DataFrame באמצעות Spark.read.json()



קריאת JSON ל-PySpark DataFrame באמצעות PySpark SQL



במדריך זה, נבחן כיצד לקרוא JSON לתוך PySpark DataFrame באמצעות pandas.read_json(), spark.read.json() ו-spark.sql. בכל התרחישים, נבחן את הדוגמאות השונות על ידי התחשבות בפורמטים השונים של JSON.





התקן את ספריית PySpark לפני יישום הדוגמאות הבאות.

pip להתקין pyspark

לאחר ההתקנה המוצלחת, אתה יכול לראות את הפלט באופן הבא:



קריאת JSON לתוך PySpark DataFrame באמצעות Pandas.read_json()

ב- PySpark, נעשה שימוש בשיטת createDataFrame() ליצירת ה-DataFrame ישירות. כאן, אנחנו רק צריכים להעביר את קובץ ה-JSON/הנתיב לקובץ JSON דרך שיטת pandas.read_json()‎. שיטת read_json() זו לוקחת את שם הקובץ/נתיב הזמין במודול Pandas. זו הסיבה שיש צורך לייבא ולהשתמש במודול Pandas.

תחביר:

spark_app.createDataFrame(pandas.read_json( 'שם_קובץ.json' ))

דוגמא:

בואו ניצור קובץ JSON בשם 'student_skill.json' שמכיל 2 רשומות. כאן, המפתחות/עמודות הם 'תלמיד 1' ו-'תלמיד 2'. השורות הן שם, גיל, מיומנות 1 ומיומנות 2.

ייבוא ​​pyspark

לייבא פנדות

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

# באמצעות pandas.read_json()

candidate_skills = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))

candidate_skills.show()

תְפוּקָה:

אנו יכולים לראות שנתוני JSON מומרים ל-PySpark DataFrame עם עמודות ושורות שצוינו.

2. קריאת JSON ל-PySpark DataFrame באמצעות Spark.read.json()

ה-read.json() הוא שיטה הדומה ל-read_json() בפנדאס. כאן, read.json() לוקח נתיב ל-JSON או ישירות לקובץ JSON, וטוען אותו ישירות לתוך PySpark DataFrame. אין צורך להשתמש בשיטת createDataFrame() בתרחיש זה. אם ברצונך לקרוא מספר קובצי JSON בו-זמנית, עלינו להעביר רשימה של שמות קבצי JSON דרך רשימה המופרדת בפסיק. כל רשומות ה-JSON מאוחסנות ב-DataFrame יחיד.

תחביר:

קובץ בודד - spark_app.read.json( 'שם_קובץ.json' )

קבצים מרובים - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

תרחיש 1: קרא את JSON עם שורה אחת

אם קובץ ה-JSON שלך נמצא בפורמטים record1, record2, record3... (שורה בודדת), נוכל לקרוא לו בתור JSON עם שורות בודדות. Spark מעבד את הרשומות הללו ומאחסן אותן ב-PySpark DataFrame כשורות. כל רשומה היא שורה ב-PySpark DataFrame.

בואו ניצור קובץ JSON בשם 'candidate_skills.json' שמכיל 3 רשומות. קרא את ה-JSON הזה לתוך PySpark DataFrame.

ייבוא ​​pyspark

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

# קרא candidate_skills.json לתוך PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )

candidate_skills.show()

תְפוּקָה:

אנו יכולים לראות שנתוני JSON מומרים ל-PySpark DataFrame עם רשומות ושמות עמודות שצוינו.

תרחיש 2: קרא את JSON בעל שורות מרובות

אם לקובץ ה-JSON שלך יש שורות מרובות, עליך להשתמש בשיטה read.option().json() כדי להעביר את הפרמטר מרובי השורות שיש להגדיר כ-true. זה מאפשר לנו לטעון JSON עם מספר שורות לתוך PySpark DataFrame.

read.option( 'רב שורות' , 'נָכוֹן' ).json( 'שם_קובץ.json' )

בואו ניצור קובץ JSON בשם 'multi.json' שמכיל 3 רשומות. קרא את ה-JSON הזה לתוך PySpark DataFrame.

ייבוא ​​pyspark

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

# קרא את multi.json (בעל שורות מרובות) לתוך PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.option( 'רב שורות' , 'נָכוֹן' ).json( 'multi.json' )

candidate_skills.show()

תְפוּקָה:

תרחיש 3: קרא JSON מרובה

כבר דנו בשלב ההתחלה של מדריך זה לגבי קבצי JSON מרובים. אם ברצונך לקרוא מספר קובצי JSON בו-זמנית ולאחסן אותם ב-PySpark DataFrame בודד, עלינו להעביר רשימה של שמות קבצים לשיטת read.json()‎.

בואו ניצור שני קבצי JSON בשם 'candidate_skills.json' ו-'candidate_skills2.json' ונטען אותם לתוך PySpark DataFrame.

הקובץ 'candidate_skills.json' מכיל שלושה רשומות.

הקובץ 'candidate_skill2.json' מכיל רק שיא בודד.

ייבוא ​​pyspark

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

# קרא קבצי candidate_skills ו-candidate_skills2 בכל פעם לתוך PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidate_skills2.json' ])

candidate_skills.show()

תְפוּקָה:

לבסוף, ה-DataFrame מחזיק בארבע רשומות. שלושת הרשומות הראשונות שייכות ל-JSON הראשון והרשומות האחרונות שייכות ל-JSON השני.

קריאת JSON ל-PySpark DataFrame באמצעות Spark.read.json()

ה-read.json() הוא שיטה הדומה ל-read_json() בפנדאס. כאן, read.json() לוקח נתיב ל-JSON או ישירות לקובץ JSON וטוען אותו ישירות לתוך PySpark DataFrame. אין צורך להשתמש בשיטת createDataFrame() בתרחיש זה. אם ברצונך לקרוא מספר קובצי JSON בו-זמנית, עלינו להעביר רשימה של שמות קבצי JSON דרך רשימה המופרדת בפסיק. כל רשומות ה-JSON מאוחסנות ב-DataFrame יחיד.

תחביר:

קובץ בודד - spark_app.read.json( 'שם_קובץ.json' )

קבצים מרובים - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

תרחיש 1: קרא את JSON עם שורה אחת

אם קובץ ה-JSON שלך הוא בפורמט record1, record2, record3... (קו בודד), נוכל לקרוא לו בתור JSON עם שורות בודדות. Spark מעבד את הרשומות הללו ומאחסן אותן ב-PySpark DataFrame כשורות. כל רשומה היא שורה ב-PySpark DataFrame.

בואו ניצור קובץ JSON בשם 'candidate_skills.json' שמכיל 3 רשומות. קרא את ה-JSON הזה לתוך PySpark DataFrame.

ייבוא ​​pyspark

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

# קרא candidate_skills.json לתוך PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )

candidate_skills.show()

תְפוּקָה:

אנו יכולים לראות שנתוני JSON מומרים ל-PySpark DataFrame עם רשומות ושמות עמודות שצוינו.

קריאת JSON ל-PySpark DataFrame באמצעות PySpark SQL

זה יכול להיות אפשרי ליצור תצוגה זמנית של נתוני ה-JSON שלנו באמצעות PySpark SQL. באופן ישיר, אנו יכולים לספק את ה-JSON בזמן יצירת התצוגה הזמנית. תסתכל על התחביר הבא. לאחר מכן, נוכל להשתמש בפקודה SELECT כדי להציג את PySpark DataFrame.

תחביר:

spark_app.sql( 'צור תצוגה זמנית VIEW_NAME באמצעות JSON OPTIONS (נתיב 'file_name.json')' )

כאן, 'VIEW_NAME' הוא התצוגה של נתוני ה-JSON וה-'file_name' הוא השם של קובץ ה-JSON.

דוגמה 1:

שקול את קובץ ה-JSON ששימש בדוגמאות הקודמות - 'candidate_skills.json'. בחר את כל השורות מ-DataFrame באמצעות SELECT עם האופרטור '*'. כאן, * בוחר את כל העמודות מ-PySpark DataFrame.

ייבוא ​​pyspark

לייבא פנדות

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

# שימוש ב- spark.sql ליצירת VIEW מה-JSON

candidate_skills = linuxhint_spark_app.sql( 'צור תצוגה זמנית של Candidate_data באמצעות JSON OPTIONS (נתיב 'candidate_skills.json')' )

# השתמש בשאילתת SELECT כדי לבחור את כל הרשומות מתוך Candidate_data.

linuxhint_spark_app.sql( 'בחר * מ-Candidate_data' ).הופעה()

תְפוּקָה:

המספר הכולל של רשומות ב-PySpark DataFrame (נקרא מ-JSON) הוא 3.

דוגמה 2:

כעת, סנן את הרשומות ב-PySpark DataFrame בהתבסס על עמודת הגיל. השתמש באופרטור 'גדול מ' בגיל כדי לקבל את השורות עם גיל גדול מ-22.

# השתמש בשאילתת SELECT כדי לבחור רשומות עם גיל מעל 22.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data שבו גיל>22' ).הופעה()

תְפוּקָה:

יש רק רשומה אחת ב-PySpark DataFrame עם גיל גדול מ-22.

סיכום

למדנו את שלוש הדרכים השונות לקרוא את ה-JSON לתוך PySpark DataFrame. ראשית, למדנו כיצד להשתמש בשיטת read_json() הזמינה במודול Pandas כדי לקרוא JSON ל-PySpark DataFrame. לאחר מכן, למדנו כיצד לקרוא את קבצי JSON בודדים/מרובים בשורות באמצעות שיטת spark.read.json() עם option(). כדי לקרוא מספר קובצי JSON בו-זמנית, עלינו להעביר רשימה של שמות קבצים לשיטה זו. באמצעות PySpark SQL, קובץ ה-JSON נקרא לתצוגה הזמנית וה-DataFrame מוצג באמצעות שאילתת ה-SELECT.