āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻžāĻ āĻ, āĻļā§āĻ āĻŦāĻŋāĻāĻžāĻ˛!
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻ¨ā§āĻāĻĢā§āĻ˛ā§āĻā§āĻ¸ā§āĻ° āĻŦāĻŋāĻ āĻĄā§āĻāĻž āĻ¸āĻ˛āĻŋāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ āĻāĻ˛āĻžāĻāĻžāĻ° āĻļā§āĻ°ā§āĻˇāĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻĻāĻžāĻ¤āĻž āĻ ā§āĻ¯āĻžāĻĒāĻžāĻāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻāĻžāĻ āĻžāĻŽā§ āĻ¸ā§āĻā§āĻ°āĻĢā§āĻ°āĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§āĻā§āĻ¨āĨ¤
āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻĸāĻŋāĻ˛ā§āĻĸāĻžāĻ˛āĻžāĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ°ā§āĻĄ āĻĄā§āĻāĻžāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻļā§āĻā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻžāĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻĻā§āĻāĻž āĻĻā§āĻ¯āĻŧāĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻā§āĻ˛āĻŋ āĻšāĻ˛ āĻ˛āĻ, āĻŦāĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž, 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