āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ā§‡ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻŦāĻŋāĻŦāĻ°ā§āĻ¤āĻ¨

āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻžāĻ āĻ•, āĻļā§āĻ­ āĻŦāĻŋāĻ•āĻžāĻ˛!

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡, āĻ¨ā§‡āĻ“āĻĢā§āĻ˛ā§‡āĻ•ā§āĻ¸ā§‡āĻ° āĻŦāĻŋāĻ— āĻĄā§‡āĻŸāĻž āĻ¸āĻ˛āĻŋāĻ‰āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻāĻ˛āĻžāĻ•āĻžāĻ° āĻļā§€āĻ°ā§āĻˇāĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻĻāĻžāĻ¤āĻž āĻ…ā§āĻ¯āĻžāĻĒāĻžāĻšāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨āĨ¤

āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ…āĻ‚āĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻĸāĻŋāĻ˛ā§‡āĻĸāĻžāĻ˛āĻžāĻ­āĻžāĻŦā§‡ āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ°ā§āĻĄ āĻĄā§‡āĻŸāĻžāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻļā§‹āĻ•ā§‡āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻœāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ‡ āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ—ā§āĻ˛āĻŋ āĻšāĻ˛ āĻ˛āĻ—, āĻŦāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž, JSON āĻŦāĻž XML āĻ†āĻ•āĻžāĻ°ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤āĨ¤ āĻĄā§‡āĻŸāĻž Hadoop āĻ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻ†āĻŽāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ‡āĻŽā§āĻĒāĻžāĻ˛āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡āĨ¤

āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡āĻ° āĻ˛ā§‡āĻ†āĻ‰āĻŸ āĻ†āĻ—āĻžāĻŽ āĻ…āĻœāĻžāĻ¨āĻžāĨ¤ āĻ¤āĻĻā§āĻĒāĻ°āĻŋ, āĻ¸ā§āĻ•āĻŋāĻŽāĻŸāĻŋ āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻž, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻŸāĻŋ āĻĄā§‡āĻŸāĻžāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ–ā§āĻŦ āĻĻā§āĻ°ā§āĻŦāĻ˛ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āĻ¤ āĻĄā§‡āĻŸāĻž āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›āĻŋāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻœ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻ˛āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

{source: "app1", error_code: ""}

āĻāĻŦāĻ‚ āĻ†āĻ—āĻžāĻŽā§€āĻ•āĻžāĻ˛ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ•āĻ‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĨā§‡āĻ•ā§‡ āĻ†āĻ¸ā§‡:

{source: "app1", error_code: "error", description: "Network error"}

āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡ āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ - āĻŦāĻŋāĻŦāĻ°āĻŖ, āĻāĻŦāĻ‚ āĻ•ā§‡āĻ‰ āĻœāĻžāĻ¨ā§‡ āĻ¨āĻž āĻāĻŸāĻŋ āĻ†āĻ¸āĻŦā§‡ āĻ•āĻŋ āĻ¨āĻžāĨ¤

āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻĄā§‡āĻŸāĻžāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ°ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻœāĻŸāĻŋ āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻŽāĻžāĻ¨āĻ•, āĻāĻŦāĻ‚ āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ‰āĻ¤ā§āĻ¸ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, JSON āĻāĻŦāĻ‚ XML āĻ‰āĻ­āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯āĻ‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻĒā§‚āĻ°ā§āĻŦā§‡ āĻ…āĻœāĻžāĻ¨āĻž āĻ¸ā§āĻ•āĻŋāĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¸ā§āĻ•āĻŋāĻŽāĻžāĻ‡āĻ­ā§‹āĻ˛āĻŋāĻ‰āĻļāĻ¨ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻœāĻ°ā§‡, āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¸āĻšāĻœ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧāĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ JSON āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°āĻŸāĻŋ āĻ¨āĻŋāĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻžāĻĢā§āĻ°ā§‡āĻŽā§‡ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻĄā§‡āĻŸāĻžāĻ•ā§‡ āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ°ā§‡ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻ•āĻ°āĻŦā§‡āĨ¤ āĻāĻ° āĻĒāĻ°ā§‡, āĻšāĻžāĻ‡āĻ­ āĻŽā§‡āĻŸāĻžāĻ¸ā§āĻŸā§‹āĻ°ā§‡ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻŋāĻ›ā§ parquet-āĻ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, āĻ¯āĻž āĻ‡āĻŽāĻĒāĻžāĻ˛āĻžāĻ¤ā§‡āĻ“ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤āĨ¤

āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¸āĻšāĻœ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡āĨ¤

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ•ā§€ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¤āĻž āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ¨āĻ¯āĻŧāĨ¤

āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻžāĻĢā§āĻ°ā§‡āĻŽā§‡ JSON āĻŦāĻž XML āĻĒāĻĄāĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤

āĻ¯āĻĨāĻž, āĻāĻŸāĻŋ āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ JSON āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻāĻŦāĻ‚ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ:

df = spark.read.json(path...)

āĻāĻŸāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻĄā§‡āĻŸāĻž āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻĨā§‡āĻˇā§āĻŸāĨ¤

āĻŦāĻžāĻ¸ā§āĻ¤āĻŦā§‡, āĻĻā§ƒāĻļā§āĻ¯āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻĨā§‡āĻ•ā§‡ JSON āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻĒāĻĄāĻŧāĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻžāĻĢā§āĻ°ā§‡āĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻ¨ā§‡āĻ• āĻŦā§‡āĻļāĻŋ āĻœāĻŸāĻŋāĻ˛āĨ¤ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻāĻ‡āĻ°āĻ•āĻŽ āĻĻā§‡āĻ–āĻžāĻšā§āĻ›ā§‡: āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻļā§‹āĻ•ā§‡āĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻĒā§āĻ°āĻ¤āĻŋāĻĻāĻŋāĻ¨ āĻ¨āĻ¤ā§āĻ¨ āĻĄā§‡āĻŸāĻž āĻ†āĻ¸ā§‡, āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻļā§‹āĻ•ā§‡āĻ¸ā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻĻāĻ°āĻ•āĻžāĻ°, āĻ­ā§āĻ˛ā§‡ āĻ¯āĻžāĻŦā§‡āĻ¨ āĻ¨āĻž āĻ¯ā§‡ āĻ¸ā§āĻ•āĻŋāĻŽāĻŸāĻŋ āĻ†āĻ˛āĻžāĻĻāĻž āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§āĻ•āĻŋāĻŽ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§‚āĻĒ:

1 āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻĄā§‡āĻŸāĻž Hadoop-āĻ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻĻā§ˆāĻ¨āĻŋāĻ• āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻŸāĻŋ āĻ‰āĻ¤ā§āĻ¸ āĻĄā§‡āĻŸāĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°, āĻ¯āĻž āĻĻāĻŋāĻ¨ā§‡ āĻŦāĻŋāĻ­āĻžāĻœāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

2 āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ˛ā§‹āĻĄāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻ‡ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°āĻŸāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒāĻĄāĻŧāĻž āĻāĻŦāĻ‚ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻĄā§‡āĻŸāĻžāĻĢā§āĻ°ā§‡āĻŽāĻŸāĻŋ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻž āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, parquet āĻ, āĻ¯āĻž āĻĒāĻ°ā§‡ āĻ‡āĻŽāĻĒāĻžāĻ˛āĻžāĻ¤ā§‡ āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻāĻ‡ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻœāĻŽāĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤

3 āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻĻāĻŋāĻ¨ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻŦā§‡āĨ¤
āĻ•ā§āĻ°āĻŽāĻŦāĻ°ā§āĻ§āĻŽāĻžāĻ¨ āĻ˛ā§‹āĻĄāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻĒā§āĻ°āĻļā§āĻ¨ āĻ“āĻ ā§‡, āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸāĻ•ā§‡ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡āĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸āĻ•ā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻļā§āĻ¨āĨ¤

āĻāĻ•āĻŸāĻž āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤ āĻ§āĻ°āĻž āĻ¯āĻžāĻ• āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ§āĻžāĻĒāĻŸāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡ JSON āĻĢāĻžāĻ‡āĻ˛ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ

āĻ¤āĻžāĻĻā§‡āĻ° āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻžāĻĢā§āĻ°ā§‡āĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻļā§‹āĻ•ā§‡āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¨ā§‡āĻ‡āĨ¤ āĻāĻŸāĻŋ āĻšāĻ˛ āĻĒā§āĻ°āĻĨāĻŽ āĻ§āĻžāĻĒ āĻ¯āĻž āĻ¸āĻšāĻœā§‡āĻ‡ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡:

df = spark.read.option("mergeSchema", True).json(".../*") 
df.printSchema()

root 
|-- a: long (nullable = true) 
|-- b: string (nullable = true) 
|-- c: struct (nullable = true) |    
|-- d: long (nullable = true)

āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ āĻŋāĻ• āĻšāĻŦā§‡ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧāĨ¤

āĻ†āĻŽāĻ°āĻž JSON āĻĒāĻĄāĻŧā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻĄāĻžāĻŸāĻžāĻĢā§āĻ°ā§‡āĻŽāĻŸāĻŋāĻ•ā§‡ parquet āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋ, āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ‰āĻĒāĻžāĻ¯āĻŧā§‡ Hive-āĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻŋ:

df.write.format(“parquet”).option('path','<External Table Path>').saveAsTable('<Table Name>')

āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻļā§‹āĻ•ā§‡āĻ¸ āĻĒā§‡āĻ¤ā§‡.

āĻ•āĻŋāĻ¨ā§āĻ¤ā§, āĻĒāĻ°ā§‡āĻ° āĻĻāĻŋāĻ¨ āĻ‰ā§ŽāĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻ¤āĻĨā§āĻ¯ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ JSON āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻ‡ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ‰ā§ŽāĻ¸ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ…āĻ‚āĻļ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°, āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡ āĻāĻ•āĻĻāĻŋāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻĨāĻžāĻ•ā§‡ āĻ¨āĻžāĨ¤

āĻāĻ•āĻŸāĻŋ āĻ¯ā§ŒāĻ•ā§āĻ¤āĻŋāĻ• āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻš'āĻ˛ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸāĻ•ā§‡ āĻĻāĻŋāĻ¨ā§‡ āĻŦāĻŋāĻ­āĻžāĻœāĻ¨ āĻ•āĻ°āĻž, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒāĻ°ā§‡āĻ° āĻĻāĻŋāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻŦā§‡āĨ¤ āĻāĻŸāĻŋāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋāĻ“ āĻ¸ā§āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤; āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ˛ā§‹āĻĄāĻŋāĻ‚ āĻ•āĻ°āĻŋ, āĻ‰āĻĒāĻ°ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻĄā§‡āĻŸāĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋ, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŋāĨ¤ āĻāĻ‡ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋāĻ•ā§‡ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ‡āĻ¨āĻŋāĻļāĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŦāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ:

df.write.partitionBy("date_load").mode("overwrite").parquet(dbpath + "/" + db + "/" + destTable)

āĻĒāĻ°ā§‡āĻ° āĻĻāĻŋāĻ¨ āĻ†āĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻŦ:

df.coalesce(1).write.mode("overwrite").parquet(dbpath + "/" + db + "/" + destTable +"/date_load=" + date_load + "/")

āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ Hive-āĻ āĻĒā§āĻ¨āĻƒāĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻž āĻŦāĻžāĻ•āĻŋ āĻ†āĻ›ā§‡āĨ¤
āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻāĻ–āĻžāĻ¨ā§‡āĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĨ¤ āĻļā§€āĻ˜ā§āĻ°āĻ‡ āĻŦāĻž āĻĒāĻ°ā§‡, āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻ•āĻžāĻ āĻŋ āĻ†āĻ° āĻĒāĻžāĻ āĻ¯ā§‹āĻ—ā§āĻ¯ āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤ āĻāĻ‡ āĻ•āĻžāĻ°āĻŖā§‡ āĻ¯ā§‡āĻ­āĻžāĻŦā§‡ parquet āĻāĻŦāĻ‚ JSON āĻ–āĻžāĻ˛āĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ­āĻŋāĻ¨ā§āĻ¨āĻ­āĻžāĻŦā§‡ āĻ†āĻšāĻ°āĻŖ āĻ•āĻ°ā§‡āĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ—āĻ¤āĻ•āĻžāĻ˛ JSON āĻāĻ¸ā§‡āĻ›ā§‡:

ДĐĩĐŊŅŒ 1: {"a": {"b": 1}},

āĻāĻŦāĻ‚ āĻ†āĻœ āĻāĻ•āĻ‡ JSON āĻāĻ° āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻšā§āĻ›ā§‡:

ДĐĩĐŊŅŒ 2: {"a": null}

āĻ§āĻ°āĻž āĻ¯āĻžāĻ• āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĻā§āĻŸāĻŋ āĻ†āĻ˛āĻžāĻĻāĻž āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ†āĻ›ā§‡, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻ¨ āĻ†āĻ›ā§‡āĨ¤
āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°ā§‹ āĻ‰ā§ŽāĻ¸ā§‡āĻ° āĻĄā§‡āĻŸāĻž āĻĒāĻĄāĻŧāĻŋ, āĻ¤āĻ–āĻ¨ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻŸāĻžāĻ‡āĻĒ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻŦā§‡, āĻāĻŦāĻ‚ āĻŦā§āĻāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡ āĻ¯ā§‡ "a" āĻšāĻ˛ "āĻ•āĻžāĻ āĻžāĻŽā§‹" āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°, āĻ¯āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° "b" āĻŸāĻžāĻ‡āĻĒ INTāĨ¤ āĻ¤āĻŦā§‡, āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻŸāĻŋ āĻŦā§‡āĻŽāĻžāĻ¨āĻžāĻ¨ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ¸ā§āĻ•āĻŋāĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ ā§‡āĻ° āĻ¤ā§ˆāĻ°āĻŋ:

df1 (a: <struct<"b": INT>>)
df2 (a: STRING NULLABLE)

āĻāĻ‡ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻŸāĻŋ āĻ¸ā§āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤, āĻ¤āĻžāĻ‡ āĻ‰ā§ŽāĻ¸ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ–āĻžāĻ˛āĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ°āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻŦāĻŋāĻļā§‡āĻˇāĻ­āĻžāĻŦā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

df = spark.read.json("...", dropFieldIfAllNull=True)

āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, parquet āĻāĻ•āĻ¸āĻ™ā§āĻ—ā§‡ āĻĒāĻĄāĻŧāĻž āĻ¯āĻžāĻŦā§‡ āĻ¯ā§‡ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ—āĻ āĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤
āĻ¯āĻĻāĻŋāĻ“ āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ā§‡ āĻ¯āĻžāĻ°āĻž āĻāĻŸāĻŋ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ āĻ¤āĻžāĻ°āĻž āĻ¤āĻŋāĻ•ā§āĻ¤āĻ­āĻžāĻŦā§‡ āĻšāĻžāĻ¸āĻŦā§‡āĻ¨āĨ¤ āĻ•ā§‡āĻ¨? āĻšā§āĻ¯āĻžāĻ, āĻ•āĻžāĻ°āĻŖ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ†āĻ°āĻ“ āĻĻā§āĻŸāĻŋ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻŦā§‡āĨ¤ āĻ…āĻĨāĻŦāĻž āĻ¤āĻŋāĻ¨. āĻ…āĻĨāĻŦāĻž āĻšāĻžāĻ°. āĻĒā§āĻ°āĻĨāĻŽāĻŸāĻŋ, āĻ¯āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ JSON āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¸āĻžāĻ‚āĻ–ā§āĻ¯āĻŋāĻ• āĻĒā§āĻ°āĻ•āĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻĻā§‡āĻ–āĻžāĻŦā§‡ā§ˇ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, {intField: 1} āĻāĻŦāĻ‚ {intField: 1.1}āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻžāĻšā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻŽāĻžāĻ°ā§āĻœāĻŸāĻŋ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻĒāĻĄāĻŧāĻŦā§‡, āĻ¯āĻž āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸āĻ āĻŋāĻ• āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻŦā§‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦā§‡āĻļā§€ āĻšāĻ˛ā§‡, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ•āĻŸāĻŋ intField āĻĨāĻžāĻ•āĻŦā§‡: int, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯ intField āĻĨāĻžāĻ•āĻŦā§‡: āĻĄāĻŦāĻ˛āĨ¤

āĻāĻ‡ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒāĻ¤āĻžāĻ•āĻž āĻ†āĻ›ā§‡:

df = spark.read.json("...", dropFieldIfAllNull=True, primitivesAsString=True)

āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻĄā§‡āĻŸāĻžāĻĢā§āĻ°ā§‡āĻŽā§‡ āĻāĻŦāĻ‚ āĻĒā§āĻ°ā§‹ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§ˆāĻ§ āĻĒā§āĻ¯āĻžāĻ°āĻ•ā§‡āĻŸ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻšā§āĻ¯āĻžāĻ? āĻ¨āĻž.

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž Hive āĻ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ Hive āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ¨āĻžāĻŽā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ•ā§‡āĻ¸ āĻ¸āĻ‚āĻŦā§‡āĻĻāĻ¨āĻļā§€āĻ˛ āĻ¨āĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ parquet āĻšāĻ¯āĻŧāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ¸āĻš āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨: field1: int āĻāĻŦāĻ‚ Field1: int āĻšāĻžāĻ‡āĻ­ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻ‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻ¯āĻŧāĨ¤ āĻ›ā§‹āĻŸ āĻšāĻžāĻ¤ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻ­ā§āĻ˛āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤

āĻāĻ° āĻĒāĻ°ā§‡, āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ āĻŋāĻ• āĻ†āĻ›ā§‡ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡āĨ¤

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¸āĻŦ āĻāĻ¤ āĻ¸āĻšāĻœ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ, āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻ¸ā§āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻ¯āĻŧ. āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸ āĻĢāĻžāĻ‡āĻ˛ āĻĨāĻžāĻ•āĻŦā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, _SUCCESS āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸āĻĢāĻ˛ āĻĒāĻ¤āĻžāĻ•āĻžāĨ¤ āĻ•āĻžāĻ āĻŦāĻžāĻĻāĻžāĻŽ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻ•āĻžāĻ°āĻŖ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻāĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ•āĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‹āĻ§ āĻ•āĻ°ā§‡ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨āĻŸāĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

hadoopConf = sc._jsc.hadoopConfiguration()
hadoopConf.set("parquet.enable.summary-metadata", "false")
hadoopConf.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")

āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻāĻ–āĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻĻāĻŋāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻ•ā§‡āĻŸ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĻāĻŋāĻ¨ā§‡āĻ° āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻž āĻĨāĻžāĻ•ā§‡āĨ¤ āĻĄāĻžāĻŸāĻž āĻŸāĻžāĻ‡āĻĒ āĻĻā§āĻŦāĻ¨ā§āĻĻā§āĻŦ āĻ¸āĻš āĻ•ā§‹āĻ¨āĻ“ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ¯āĻžāĻ¤ā§‡ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡ āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡āĻ‡ āĻ¯āĻ¤ā§āĻ¨ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻāĻ–āĻ¨ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻœāĻžāĻ¨āĻž āĻ¨ā§‡āĻ‡, āĻ¤āĻžāĻ›āĻžāĻĄāĻŧāĻž, Hive-āĻ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ­ā§āĻ˛ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ¸ā§āĻ•āĻŋāĻŽāĻžāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•ā§ƒāĻ¤āĻŋ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨. āĻāĻŸāĻŋ āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡: āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡āĻ° āĻĒā§āĻ¯āĻžāĻ°āĻ•ā§‡āĻŸāĻŸāĻŋ āĻ†āĻŦāĻžāĻ° āĻĒāĻĄāĻŧā§āĻ¨, āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ¨āĻŋāĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ DDL āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨, āĻ¯āĻžāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ Hive-āĻ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°āĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻŸā§‡āĻŦāĻŋāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡āĻ° āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ā§ˇ

āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻšāĻ¤ā§āĻ°ā§āĻĨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨. āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ° āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻŋ, āĻ¤āĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤ āĻāĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋ āĻ¨āĻŋāĻœā§‡āĻ°āĻžāĻ‡ āĻ•āĻ°āĻŋ, āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻž āĻĻāĻ°āĻ•āĻžāĻ° āĻ¯ā§‡ āĻ•āĻžāĻ ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ‡āĻ­ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ āĻāĻŽāĻ¨ āĻ…āĻ•ā§āĻˇāĻ° āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ›ā§āĻāĻĄāĻŧā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯ā§‡ āĻāĻŸāĻŋ "corrupt_record" āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¨āĻžāĨ¤ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻĒāĻ˛āĻžāĻ¯āĻŧāĻ¨ āĻ›āĻžāĻĄāĻŧāĻž Hive āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻž.

āĻāĻŸāĻŋ āĻœā§‡āĻ¨ā§‡, āĻ†āĻŽāĻ°āĻž āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋ āĻĒāĻžāĻ‡:

f_def = ""
for f in pf.dtypes:
  if f[0] != "date_load":
    f_def = f_def + "," + f[0].replace("_corrupt_record", "`_corrupt_record`") + " " + f[1].replace(":", "`:").replace("<", "<`").replace(",", ",`").replace("array<`", "array<") 
table_define = "CREATE EXTERNAL TABLE jsonevolvtable (" + f_def[1:] + " ) "
table_define = table_define + "PARTITIONED BY (date_load string) STORED AS PARQUET LOCATION '/user/admin/testJson/testSchemaEvolution/pq/'"
hc.sql("drop table if exists jsonevolvtable")
hc.sql(table_define)

āĻ•ā§‹āĻĄ ("_corrupt_record", "`_corrupt_record`") + " " + f[1].āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨(":", "`:").āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨("<", "<`").āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨(",", ",`").āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨("āĻ…ā§āĻ¯āĻžāĻ°ā§‡<`", "āĻ…ā§āĻ¯āĻžāĻ°ā§‡<") āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ DDL āĻ•āĻ°ā§‡, āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡:

create table tname (_field1 string, 1field string)

“_field1, 1field” āĻāĻ° āĻŽāĻ¤ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¯āĻŧā§‡, āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ DDL āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ¨āĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻāĻ¸ā§āĻ•ā§‡āĻĒ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ: āĻŸā§‡āĻŦāĻŋāĻ˛ `tname` (`_field1` āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚, `1field` āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚) āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤

āĻĒā§āĻ°āĻļā§āĻ¨ āĻ‰āĻ āĻ›ā§‡: āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§āĻ•āĻŋāĻŽāĻž (āĻĒāĻŋāĻāĻĢ āĻ•ā§‹āĻĄā§‡) āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻžāĻĢā§āĻ°ā§‡āĻŽ āĻĒāĻžāĻŦā§‡āĻ¨? āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻ‡ āĻĒāĻŋāĻāĻĢ āĻĒā§‡āĻ¤ā§‡? āĻāĻŸāĻŋ āĻĒāĻžā§āĻšāĻŽ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĨ¤ āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡āĻ° parquet āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻš āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ā§‡āĻ° āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻĒāĻĄāĻŧā§āĻ¨? āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•āĻ āĻŋāĻ¨āĨ¤

āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ Hive āĻŽāĻ§ā§āĻ¯ā§‡ āĻ†āĻ›ā§‡. āĻ†āĻĒāĻ¨āĻŋ āĻĒā§āĻ°ā§‹ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ Hive āĻĨā§‡āĻ•ā§‡ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ¨āĻŋāĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ā§‡āĻ° āĻ¸ā§āĻ•āĻŋāĻŽāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻšāĻžāĻ‡āĻ­ āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻŽā§‡āĻŸāĻžāĻĄā§‡āĻŸāĻž āĻĒāĻĄāĻŧāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡, āĻāĻ•āĻŸāĻŋ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ‰āĻ­āĻ¯āĻŧ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻāĻ•āĻŦāĻžāĻ°ā§‡ āĻĒāĻĄāĻŧāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻŽā§‚āĻ˛āĻ¤, āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻž āĻ¯āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¤āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Hive-āĻ āĻŽā§‚āĻ˛ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨āĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻĄā§‡āĻŸāĻžāĻ“ āĻ†āĻ›ā§‡āĨ¤ āĻ¯āĻž āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻž āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ¯āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡:

from pyspark.sql import HiveContext
from pyspark.sql.functions import lit
hc = HiveContext(spark)
df = spark.read.json("...", dropFieldIfAllNull=True)
df.write.mode("overwrite").parquet(".../date_load=12-12-2019")
pe = hc.sql("select * from jsonevolvtable limit 1")
pe.write.mode("overwrite").parquet(".../fakePartiton/")
pf = spark.read.option("mergeSchema", True).parquet(".../date_load=12-12-2019/*", ".../fakePartiton/*")

āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻ–āĻŖā§āĻĄā§‡āĻ° āĻŽāĻ¤ā§‹ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ DDL āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋāĨ¤
āĻ¯āĻĻāĻŋ āĻĒā§āĻ°ā§‹ āĻšā§‡āĻ‡āĻ¨āĻŸāĻŋ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡, āĻ¯āĻĨāĻž, āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ˛ā§‹āĻĄ āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻšāĻžāĻ‡āĻ­ā§‡ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻĒāĻžāĻ‡āĨ¤

āĻļā§‡āĻˇ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻšāĻœā§‡ āĻāĻ•āĻŸāĻŋ Hive āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž, āĻ•āĻžāĻ°āĻŖ āĻāĻŸāĻŋ āĻ­ā§‡āĻ™ā§‡ āĻ¯āĻžāĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ Hive āĻāĻ° āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ āĻŋāĻ• āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻžāĻ§ā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

from pyspark.sql import HiveContext
hc = HiveContext(spark) 
hc.sql("MSCK REPAIR TABLE " + db + "." + destTable)

JSON āĻĒāĻĄāĻŧāĻžāĻ° āĻāĻŦāĻ‚ āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻšāĻœ āĻ•āĻžāĻœāĻŸāĻŋ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ•āĻžāĻŸāĻŋāĻ¯āĻŧā§‡ āĻ‰āĻ āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋāĻ“ āĻāĻ‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻšāĻœ, āĻ¤āĻŦā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻ—ā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻļā§‹āĻ•ā§‡āĻ¸ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ›āĻŋāĻ˛:

  • āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸā§‡ āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨, āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻĨā§‡āĻ•ā§‡ āĻŽā§āĻ•ā§āĻ¤āĻŋ āĻĒāĻžāĻ¨
  • āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ• āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ°ā§‡āĻ›ā§‡ āĻāĻŽāĻ¨ āĻ‰āĻ¤ā§āĻ¸ āĻĄā§‡āĻŸāĻžāĻ¤ā§‡ āĻ–āĻžāĻ˛āĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻĄāĻŋāĻ˛ āĻ•āĻ°ā§āĻ¨ā§ˇ
  • āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚-āĻ āĻ¸āĻšāĻœ āĻĒā§āĻ°āĻ•āĻžāĻ° āĻ•āĻžāĻ¸ā§āĻŸ āĻ•āĻ°ā§āĻ¨
  • āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ¨āĻžāĻŽ āĻ›ā§‹āĻŸ āĻšāĻžāĻ¤ā§‡āĻ° āĻ…āĻ•ā§āĻˇāĻ°ā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°ā§āĻ¨
  • Hive-āĻ āĻĒā§ƒāĻĨāĻ• āĻĄā§‡āĻŸāĻž āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ (DDL āĻ¸ā§ƒāĻˇā§āĻŸāĻŋ)
  • Hive āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻžāĻ“ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŽāĻ¨ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ¨āĻžāĻŽ āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻ­ā§āĻ˛āĻŦā§‡āĻ¨ āĻ¨āĻž
  • Hive-āĻ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻļāĻŋāĻ–ā§āĻ¨

āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡, āĻ†āĻŽāĻ°āĻž āĻ¨ā§‹āĻŸ āĻ•āĻ°āĻŋ āĻ¯ā§‡ āĻ¸ā§āĻŸā§‹āĻ°āĻĢā§āĻ°āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤āĻŸāĻŋ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ¤ā§‡ āĻĒāĻ°āĻŋāĻĒā§‚āĻ°ā§āĻŖāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ¯āĻĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻ¯āĻŧ āĻ¤āĻŦā§‡ āĻ¸āĻĢāĻ˛ āĻĻāĻ•ā§āĻˇāĻ¤āĻž āĻ¸āĻš āĻāĻ•āĻœāĻ¨ āĻ…āĻ­āĻŋāĻœā§āĻž āĻ…āĻ‚āĻļā§€āĻĻāĻžāĻ°ā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ­āĻžāĻ˛āĨ¤

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻĒāĻĄāĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻ†āĻŽāĻ°āĻž āĻ†āĻļāĻž āĻ•āĻ°āĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻ¤āĻĨā§āĻ¯āĻŸāĻŋ āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻ•āĻ°ā§‡āĻ¨āĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨