ಡೆಲ್ಟಾ ಸರೋವರಕ್ಕೆ ಧುಮುಕುವುದು: ಸ್ಕೀಮಾ ಜಾರಿ ಮತ್ತು ವಿಕಸನ

ಹೇ ಹಬ್ರ್! ನಾನು ನಿಮ್ಮ ಗಮನಕ್ಕೆ ಲೇಖನದ ಅನುವಾದವನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತೇನೆ "ಡೆಲ್ಟಾ ಲೇಕ್‌ಗೆ ಡೈವಿಂಗ್: ಸ್ಕೀಮಾ ಎನ್‌ಫೋರ್ಸ್‌ಮೆಂಟ್ & ಎವಲ್ಯೂಷನ್" ಲೇಖಕರು ಬುರಾಕ್ ಯವುಜ್, ಬ್ರೆನ್ನರ್ ಹೈಂಟ್ಜ್ ಮತ್ತು ಡೆನ್ನಿ ಲೀ, ಇದನ್ನು ಕೋರ್ಸ್ ಪ್ರಾರಂಭದ ನಿರೀಕ್ಷೆಯಲ್ಲಿ ಸಿದ್ಧಪಡಿಸಲಾಗಿದೆ ಡೇಟಾ ಇಂಜಿನಿಯರ್ OTUS ನಿಂದ.

ಡೆಲ್ಟಾ ಸರೋವರಕ್ಕೆ ಧುಮುಕುವುದು: ಸ್ಕೀಮಾ ಜಾರಿ ಮತ್ತು ವಿಕಸನ

ಡೇಟಾ, ನಮ್ಮ ಅನುಭವದಂತೆ, ನಿರಂತರವಾಗಿ ಸಂಗ್ರಹಗೊಳ್ಳುತ್ತಿದೆ ಮತ್ತು ವಿಕಸನಗೊಳ್ಳುತ್ತಿದೆ. ಮುಂದುವರಿಸಲು, ಪ್ರಪಂಚದ ನಮ್ಮ ಮಾನಸಿಕ ಮಾದರಿಗಳು ಹೊಸ ಡೇಟಾಗೆ ಹೊಂದಿಕೊಳ್ಳಬೇಕು, ಅವುಗಳಲ್ಲಿ ಕೆಲವು ಹೊಸ ಆಯಾಮಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ - ನಾವು ಮೊದಲು ತಿಳಿದಿರದ ವಿಷಯಗಳನ್ನು ವೀಕ್ಷಿಸುವ ಹೊಸ ವಿಧಾನಗಳು. ಈ ಮಾನಸಿಕ ಮಾದರಿಗಳು ನಾವು ಹೊಸ ಮಾಹಿತಿಯನ್ನು ಹೇಗೆ ವರ್ಗೀಕರಿಸುತ್ತೇವೆ ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತೇವೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುವ ಟೇಬಲ್ ಸ್ಕೀಮಾಗಳಿಂದ ಹೆಚ್ಚು ಭಿನ್ನವಾಗಿರುವುದಿಲ್ಲ.

ಇದು ಸ್ಕೀಮಾ ನಿರ್ವಹಣೆಯ ಸಮಸ್ಯೆಗೆ ನಮ್ಮನ್ನು ತರುತ್ತದೆ. ವ್ಯಾಪಾರದ ಸವಾಲುಗಳು ಮತ್ತು ಅಗತ್ಯತೆಗಳು ಕಾಲಾನಂತರದಲ್ಲಿ ಬದಲಾಗುವುದರಿಂದ, ನಿಮ್ಮ ಡೇಟಾದ ರಚನೆಯು ಬದಲಾಗುತ್ತದೆ. ಡೆಲ್ಟಾ ಲೇಕ್ ಡೇಟಾ ಬದಲಾದಂತೆ ಹೊಸ ಅಳತೆಗಳನ್ನು ಪರಿಚಯಿಸಲು ಸುಲಭಗೊಳಿಸುತ್ತದೆ. ಬಳಕೆದಾರರು ತಮ್ಮ ಟೇಬಲ್ ಸ್ಕೀಮಾಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸರಳ ಶಬ್ದಾರ್ಥಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತಾರೆ. ಈ ಪರಿಕರಗಳು ಸ್ಕೀಮಾ ಎನ್‌ಫೋರ್ಸ್‌ಮೆಂಟ್ ಅನ್ನು ಒಳಗೊಂಡಿವೆ, ಇದು ದೋಷಗಳು ಅಥವಾ ಅನಗತ್ಯ ಡೇಟಾದಿಂದ ತಮ್ಮ ಕೋಷ್ಟಕಗಳನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಮಾಲಿನ್ಯಗೊಳಿಸದಂತೆ ಬಳಕೆದಾರರನ್ನು ರಕ್ಷಿಸುತ್ತದೆ ಮತ್ತು ಸ್ಕೀಮಾ ಎವಲ್ಯೂಷನ್, ಮೌಲ್ಯಯುತವಾದ ಡೇಟಾದ ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ಸೂಕ್ತವಾದ ಸ್ಥಳಗಳಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೇರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ಲೇಖನದಲ್ಲಿ, ನಾವು ಈ ಉಪಕರಣಗಳನ್ನು ಬಳಸುವುದರ ಕುರಿತು ಆಳವಾಗಿ ಧುಮುಕುತ್ತೇವೆ.

ಟೇಬಲ್ ಸ್ಕೀಮಾಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು

ಅಪಾಚೆ ಸ್ಪಾರ್ಕ್‌ನಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಡೇಟಾಫ್ರೇಮ್ ಡೇಟಾ ಪ್ರಕಾರಗಳು, ಕಾಲಮ್‌ಗಳು ಮತ್ತು ಮೆಟಾಡೇಟಾದಂತಹ ಡೇಟಾದ ರೂಪವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಸ್ಕೀಮಾವನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಡೆಲ್ಟಾ ಲೇಕ್‌ನೊಂದಿಗೆ, ಟೇಬಲ್ ಸ್ಕೀಮಾವನ್ನು ವಹಿವಾಟು ಲಾಗ್‌ನಲ್ಲಿ JSON ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ.

ಯೋಜನೆ ಜಾರಿ ಎಂದರೇನು?

ಸ್ಕೀಮಾ ಎನ್‌ಫೋರ್ಸ್‌ಮೆಂಟ್, ಸ್ಕೀಮಾ ವ್ಯಾಲಿಡೇಶನ್ ಎಂದೂ ಕರೆಯಲ್ಪಡುತ್ತದೆ, ಇದು ಡೆಲ್ಟಾ ಲೇಕ್‌ನಲ್ಲಿನ ಭದ್ರತಾ ಕಾರ್ಯವಿಧಾನವಾಗಿದ್ದು, ಟೇಬಲ್‌ನ ಸ್ಕೀಮಾಗೆ ಹೊಂದಿಕೆಯಾಗದ ದಾಖಲೆಗಳನ್ನು ತಿರಸ್ಕರಿಸುವ ಮೂಲಕ ಡೇಟಾ ಗುಣಮಟ್ಟವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಜನಪ್ರಿಯ ಕಾಯ್ದಿರಿಸುವಿಕೆ-ಮಾತ್ರ ರೆಸ್ಟೋರೆಂಟ್‌ನ ಮುಂಭಾಗದ ಮೇಜಿನಲ್ಲಿರುವ ಹೊಸ್ಟೆಸ್‌ನಂತೆ, ಟೇಬಲ್‌ಗೆ ನಮೂದಿಸಿದ ಡೇಟಾದ ಪ್ರತಿಯೊಂದು ಕಾಲಮ್ ನಿರೀಕ್ಷಿತ ಕಾಲಮ್‌ಗಳ ಅನುಗುಣವಾದ ಪಟ್ಟಿಯಲ್ಲಿದೆಯೇ ಎಂದು ಅವರು ಪರಿಶೀಲಿಸುತ್ತಾರೆ (ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಅವುಗಳಲ್ಲಿ ಪ್ರತಿಯೊಂದಕ್ಕೂ "ಮೀಸಲಾತಿ" ಇದೆಯೇ ) ಮತ್ತು ಪಟ್ಟಿಯಲ್ಲಿಲ್ಲದ ಕಾಲಮ್‌ಗಳೊಂದಿಗೆ ಯಾವುದೇ ದಾಖಲೆಗಳನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ.

ಸ್ಕೀಮಾ ಜಾರಿ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ?

ಡೆಲ್ಟಾ ಸರೋವರವು ಸ್ಕೀಮಾ-ಆನ್-ರೈಟ್ ತಪಾಸಣೆಯನ್ನು ಬಳಸುತ್ತದೆ, ಅಂದರೆ ಟೇಬಲ್‌ಗೆ ಎಲ್ಲಾ ಹೊಸ ಬರಹಗಳನ್ನು ಬರೆಯುವ ಸಮಯದಲ್ಲಿ ಟಾರ್ಗೆಟ್ ಟೇಬಲ್‌ನ ಸ್ಕೀಮಾದೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆಗಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ. ಸ್ಕೀಮಾ ಅಸಮಂಜಸವಾಗಿದ್ದರೆ, ಡೆಲ್ಟಾ ಲೇಕ್ ವಹಿವಾಟನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಸ್ಥಗಿತಗೊಳಿಸುತ್ತದೆ (ಯಾವುದೇ ಡೇಟಾವನ್ನು ಬರೆಯಲಾಗಿಲ್ಲ) ಮತ್ತು ಅಸಂಗತತೆಯ ಬಳಕೆದಾರರಿಗೆ ತಿಳಿಸಲು ವಿನಾಯಿತಿಯನ್ನು ನೀಡುತ್ತದೆ.
ಡೆಲ್ಟಾ ಲೇಕ್ ರೆಕಾರ್ಡ್ ಟೇಬಲ್‌ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ ಎಂದು ನಿರ್ಧರಿಸಲು ಕೆಳಗಿನ ನಿಯಮಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಬರೆಯಬಹುದಾದ ಡೇಟಾ ಫ್ರೇಮ್:

  • ಗುರಿ ಕೋಷ್ಟಕದ ಸ್ಕೀಮಾದಲ್ಲಿಲ್ಲದ ಹೆಚ್ಚುವರಿ ಕಾಲಮ್‌ಗಳನ್ನು ಹೊಂದಿರಬಾರದು. ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ಒಳಬರುವ ಡೇಟಾವು ಟೇಬಲ್‌ನಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಎಲ್ಲಾ ಕಾಲಮ್‌ಗಳನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೆ ಎಲ್ಲವೂ ಉತ್ತಮವಾಗಿರುತ್ತದೆ - ಈ ಕಾಲಮ್‌ಗಳಿಗೆ ಶೂನ್ಯ ಮೌಲ್ಯಗಳನ್ನು ನಿಗದಿಪಡಿಸಲಾಗುತ್ತದೆ.
  • ಟಾರ್ಗೆಟ್ ಟೇಬಲ್‌ನಲ್ಲಿರುವ ಕಾಲಮ್‌ಗಳ ಡೇಟಾ ಪ್ರಕಾರಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿರುವ ಕಾಲಮ್ ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಹೊಂದಿರಬಾರದು. ಟಾರ್ಗೆಟ್ ಟೇಬಲ್ ಕಾಲಮ್ ಸ್ಟ್ರಿಂಗ್‌ಟೈಪ್ ಡೇಟಾವನ್ನು ಹೊಂದಿದ್ದರೆ, ಆದರೆ ಡೇಟಾಫ್ರೇಮ್‌ನಲ್ಲಿನ ಅನುಗುಣವಾದ ಕಾಲಮ್ ಇಂಟಿಜರ್ಟೈಪ್ ಡೇಟಾವನ್ನು ಹೊಂದಿದ್ದರೆ, ಸ್ಕೀಮಾ ಜಾರಿಯು ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯುತ್ತದೆ ಮತ್ತು ಬರೆಯುವ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಡೆಯದಂತೆ ತಡೆಯುತ್ತದೆ.
  • ಸಂದರ್ಭದಲ್ಲಿ ಮಾತ್ರ ಭಿನ್ನವಾಗಿರುವ ಕಾಲಮ್ ಹೆಸರುಗಳನ್ನು ಒಳಗೊಂಡಿರಬಾರದು. ಇದರರ್ಥ ನೀವು ಒಂದೇ ಕೋಷ್ಟಕದಲ್ಲಿ 'Foo' ಮತ್ತು 'foo' ಹೆಸರಿನ ಕಾಲಮ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುವುದಿಲ್ಲ. ಸ್ಪಾರ್ಕ್ ಅನ್ನು ಕೇಸ್-ಸೆನ್ಸಿಟಿವ್ ಅಥವಾ ಕೇಸ್-ಇನ್ಸೆನ್ಸಿಟಿವ್ (ಡೀಫಾಲ್ಟ್) ಮೋಡ್‌ನಲ್ಲಿ ಬಳಸಬಹುದಾದರೂ, ಡೆಲ್ಟಾ ಲೇಕ್ ಕೇಸ್-ಪ್ರಿಸರ್ವ್ ಆಗಿದೆ ಆದರೆ ಸ್ಕೀಮಾ ಸ್ಟೋರೇಜ್‌ನಲ್ಲಿ ಸೂಕ್ಷ್ಮವಲ್ಲ. ಕಾಲಮ್ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸುವಾಗ ಮತ್ತು ಹಿಂತಿರುಗಿಸುವಾಗ ಪ್ಯಾರ್ಕ್ವೆಟ್ ಕೇಸ್ ಸೆನ್ಸಿಟಿವ್ ಆಗಿದೆ. ಸಂಭವನೀಯ ದೋಷಗಳು, ಡೇಟಾ ಭ್ರಷ್ಟಾಚಾರ ಅಥವಾ ಡೇಟಾ ನಷ್ಟವನ್ನು ತಪ್ಪಿಸಲು (ಡೇಟಾಬ್ರಿಕ್ಸ್‌ನಲ್ಲಿ ನಾವು ವೈಯಕ್ತಿಕವಾಗಿ ಅನುಭವಿಸಿದ ಸಂಗತಿ), ನಾವು ಈ ಮಿತಿಯನ್ನು ಸೇರಿಸಲು ನಿರ್ಧರಿಸಿದ್ದೇವೆ.

ಇದನ್ನು ವಿವರಿಸಲು, ಅವುಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಇನ್ನೂ ಕಾನ್ಫಿಗರ್ ಮಾಡದ ಡೆಲ್ಟಾ ಲೇಕ್ ಟೇಬಲ್‌ಗೆ ಹೊಸದಾಗಿ ರಚಿಸಲಾದ ಕೆಲವು ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಲು ನಾವು ಪ್ರಯತ್ನಿಸಿದಾಗ ಕೆಳಗಿನ ಕೋಡ್‌ನಲ್ಲಿ ಏನಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನೋಡೋಣ.

# Сгенерируем DataFrame ссуд, который мы добавим в нашу таблицу Delta Lake
loans = sql("""
            SELECT addr_state, CAST(rand(10)*count as bigint) AS count,
            CAST(rand(10) * 10000 * count AS double) AS amount
            FROM loan_by_state_delta
            """)

# Вывести исходную схему DataFrame
original_loans.printSchema()

root
  |-- addr_state: string (nullable = true)
  |-- count: integer (nullable = true)
 
# Вывести новую схему DataFrame
loans.printSchema()
 
root
  |-- addr_state: string (nullable = true)
  |-- count: integer (nullable = true)
  |-- amount: double (nullable = true) # new column
 
# Попытка добавить новый DataFrame (с новым столбцом) в существующую таблицу
loans.write.format("delta") 
           .mode("append") 
           .save(DELTALAKE_PATH)

Returns:

A schema mismatch detected when writing to the Delta table.
 
To enable schema migration, please set:
'.option("mergeSchema", "true")'
 
Table schema:
root
-- addr_state: string (nullable = true)
-- count: long (nullable = true)
 
Data schema:
root
-- addr_state: string (nullable = true)
-- count: long (nullable = true)
-- amount: double (nullable = true)
 
If Table ACLs are enabled, these options will be ignored. Please use the ALTER TABLE command for changing the schema.

ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸುವ ಬದಲು, ಡೆಲ್ಟಾ ಲೇಕ್ ಸ್ಕೀಮಾವನ್ನು ವಿಧಿಸುತ್ತದೆ ಮತ್ತು ಬರೆಯುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ. ಯಾವ ಕಾಲಮ್ (ಅಥವಾ ಕಾಲಮ್‌ಗಳ ಸೆಟ್) ವ್ಯತ್ಯಾಸವನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಲು, ಹೋಲಿಕೆಗಾಗಿ ಸ್ಪಾರ್ಕ್ ಸ್ಟಾಕ್ ಟ್ರೇಸ್‌ನಿಂದ ಎರಡೂ ಸ್ಕೀಮಾಗಳನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡುತ್ತದೆ.

ಸ್ಕೀಮಾವನ್ನು ಜಾರಿಗೊಳಿಸುವುದರಿಂದ ಏನು ಪ್ರಯೋಜನ?

ಸ್ಕೀಮಾ ಜಾರಿಯು ಸಾಕಷ್ಟು ಕಟ್ಟುನಿಟ್ಟಾದ ಪರಿಶೀಲನೆಯಾಗಿರುವುದರಿಂದ, ಉತ್ಪಾದನೆ ಅಥವಾ ಬಳಕೆಗೆ ಸಿದ್ಧವಾಗಿರುವ ಶುದ್ಧ, ಸಂಪೂರ್ಣವಾಗಿ ರೂಪಾಂತರಗೊಂಡ ಡೇಟಾ ಸೆಟ್‌ಗೆ ಗೇಟ್‌ಕೀಪರ್ ಆಗಿ ಬಳಸಲು ಇದು ಅತ್ಯುತ್ತಮ ಸಾಧನವಾಗಿದೆ. ಡೇಟಾವನ್ನು ನೇರವಾಗಿ ಫೀಡ್ ಮಾಡುವ ಕೋಷ್ಟಕಗಳಿಗೆ ಸಾಮಾನ್ಯವಾಗಿ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ:

  • ಯಂತ್ರ ಕಲಿಕೆ ಅಲ್ಗಾರಿದಮ್‌ಗಳು
  • BI ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗಳು
  • ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ದೃಶ್ಯೀಕರಣ ಪರಿಕರಗಳು
  • ಹೆಚ್ಚು ರಚನಾತ್ಮಕ, ಬಲವಾಗಿ ಟೈಪ್ ಮಾಡಲಾದ ಶಬ್ದಾರ್ಥದ ಸ್ಕೀಮಾಗಳ ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ಉತ್ಪಾದನಾ ವ್ಯವಸ್ಥೆ.

ಈ ಅಂತಿಮ ಅಡಚಣೆಗಾಗಿ ತಮ್ಮ ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸಲು, ಅನೇಕ ಬಳಕೆದಾರರು ಸರಳವಾದ "ಮಲ್ಟಿ-ಹಾಪ್" ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಬಳಸುತ್ತಾರೆ, ಅದು ಕ್ರಮೇಣ ತಮ್ಮ ಕೋಷ್ಟಕಗಳಲ್ಲಿ ರಚನೆಯನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ. ಇದರ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿದುಕೊಳ್ಳಲು, ನೀವು ಲೇಖನವನ್ನು ಪರಿಶೀಲಿಸಬಹುದು ಡೆಲ್ಟಾ ಲೇಕ್‌ನೊಂದಿಗೆ ಉತ್ಪಾದನಾ ದರ್ಜೆಯ ಯಂತ್ರ ಕಲಿಕೆ.

ಸಹಜವಾಗಿ, ಸ್ಕೀಮಾ ಜಾರಿಯನ್ನು ನಿಮ್ಮ ಪೈಪ್‌ಲೈನ್‌ನಲ್ಲಿ ಎಲ್ಲಿ ಬೇಕಾದರೂ ಬಳಸಬಹುದು, ಆದರೆ ಈ ಸಂದರ್ಭದಲ್ಲಿ ಟೇಬಲ್‌ಗೆ ಸ್ಟ್ರೀಮಿಂಗ್ ಮಾಡುವುದು ನಿರಾಶಾದಾಯಕವಾಗಿರುತ್ತದೆ ಎಂದು ನೆನಪಿಡಿ, ಉದಾಹರಣೆಗೆ, ಒಳಬರುವ ಡೇಟಾಗೆ ನೀವು ಇನ್ನೊಂದು ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಿದ್ದೀರಿ ಎಂಬುದನ್ನು ನೀವು ಮರೆತಿದ್ದೀರಿ.

ಡೇಟಾ ದುರ್ಬಲಗೊಳಿಸುವಿಕೆಯನ್ನು ತಡೆಯುವುದು

ಇಷ್ಟೊತ್ತಿಗೆ ನೀವು ಆಶ್ಚರ್ಯ ಪಡುತ್ತಿರಬಹುದು, ಏನಿದು ಗಲಾಟೆ? ಎಲ್ಲಾ ನಂತರ, ಕೆಲವೊಮ್ಮೆ ಅನಿರೀಕ್ಷಿತ "ಸ್ಕೀಮಾ ಹೊಂದಾಣಿಕೆ" ದೋಷವು ನಿಮ್ಮ ವರ್ಕ್‌ಫ್ಲೋನಲ್ಲಿ ನಿಮ್ಮನ್ನು ಟ್ರಿಪ್ ಮಾಡಬಹುದು, ವಿಶೇಷವಾಗಿ ನೀವು ಡೆಲ್ಟಾ ಲೇಕ್‌ಗೆ ಹೊಸಬರಾಗಿದ್ದರೆ. ಸ್ಕೀಮಾವನ್ನು ಅಗತ್ಯವಿರುವಂತೆ ಏಕೆ ಬದಲಾಯಿಸಬಾರದು ಇದರಿಂದ ನಾನು ನನ್ನ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಏನು ಬೇಕಾದರೂ ಬರೆಯಬಹುದು?

ಹಳೆಯ ಮಾತುಗಳ ಪ್ರಕಾರ, "ಒಂದು ಔನ್ಸ್ ತಡೆಗಟ್ಟುವಿಕೆ ಒಂದು ಪೌಂಡ್ ಚಿಕಿತ್ಸೆಗೆ ಯೋಗ್ಯವಾಗಿದೆ." ಕೆಲವು ಹಂತದಲ್ಲಿ, ನಿಮ್ಮ ಸ್ಕೀಮಾವನ್ನು ಜಾರಿಗೊಳಿಸಲು ನೀವು ಕಾಳಜಿ ವಹಿಸದಿದ್ದರೆ, ಡೇಟಾ ಪ್ರಕಾರದ ಹೊಂದಾಣಿಕೆಯ ಸಮಸ್ಯೆಗಳು ತಮ್ಮ ಕೊಳಕು ತಲೆಗಳನ್ನು ಹಿಮ್ಮೆಟ್ಟಿಸುತ್ತವೆ - ತೋರಿಕೆಯಲ್ಲಿ ಏಕರೂಪದ ಕಚ್ಚಾ ಡೇಟಾ ಮೂಲಗಳು ಅಂಚಿನ ಪ್ರಕರಣಗಳು, ದೋಷಪೂರಿತ ಕಾಲಮ್‌ಗಳು, ಅಸಮರ್ಪಕ ಮ್ಯಾಪಿಂಗ್‌ಗಳು ಅಥವಾ ಕನಸು ಕಾಣಲು ಇತರ ಭಯಾನಕ ವಿಷಯಗಳನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ದುಃಸ್ವಪ್ನಗಳು. ಈ ಶತ್ರುಗಳನ್ನು ಗೇಟ್‌ನಲ್ಲಿ ನಿಲ್ಲಿಸುವುದು - ಸ್ಕೀಮಾ ಜಾರಿಯೊಂದಿಗೆ - ಮತ್ತು ನಂತರ ಅವರು ನಿಮ್ಮ ಉತ್ಪಾದನಾ ಕೋಡ್‌ನ ಗಾಢ ಆಳದಲ್ಲಿ ಸುಪ್ತವಾಗಲು ಪ್ರಾರಂಭಿಸಿದಾಗ ಬೆಳಕಿನಲ್ಲಿ ಅವರೊಂದಿಗೆ ವ್ಯವಹರಿಸುವುದು ಉತ್ತಮ ವಿಧಾನವಾಗಿದೆ.

ಸ್ಕೀಮಾವನ್ನು ಜಾರಿಗೊಳಿಸುವುದರಿಂದ ನೀವು ಬದಲಾವಣೆಯನ್ನು ಅನುಮೋದಿಸದ ಹೊರತು ನಿಮ್ಮ ಟೇಬಲ್‌ನ ಸ್ಕೀಮಾ ಬದಲಾಗುವುದಿಲ್ಲ ಎಂಬ ಭರವಸೆಯನ್ನು ನೀಡುತ್ತದೆ. ಇದು ಡೇಟಾ ದುರ್ಬಲಗೊಳಿಸುವಿಕೆಯನ್ನು ತಡೆಯುತ್ತದೆ, ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ಆಗಾಗ್ಗೆ ಸೇರಿಸಿದಾಗ ಸಂಭವಿಸಬಹುದು, ಹಿಂದಿನ ಮೌಲ್ಯಯುತವಾದ, ಸಂಕುಚಿತ ಕೋಷ್ಟಕಗಳು ಡೇಟಾ ಮುಳುಗುವಿಕೆಯಿಂದಾಗಿ ಅವುಗಳ ಅರ್ಥ ಮತ್ತು ಉಪಯುಕ್ತತೆಯನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತವೆ. ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿರಲು, ಉನ್ನತ ಗುಣಮಟ್ಟವನ್ನು ಹೊಂದಿಸಲು ಮತ್ತು ಉತ್ತಮ ಗುಣಮಟ್ಟವನ್ನು ನಿರೀಕ್ಷಿಸಲು ನಿಮ್ಮನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುವ ಮೂಲಕ, ಸ್ಕೀಮಾ ಜಾರಿಯು ಅದನ್ನು ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಿದಂತೆಯೇ ಮಾಡುತ್ತದೆ-ನೀವು ಆತ್ಮಸಾಕ್ಷಿಯಾಗಿರಲು ಮತ್ತು ನಿಮ್ಮ ಸ್ಪ್ರೆಡ್‌ಶೀಟ್‌ಗಳು ಸ್ವಚ್ಛವಾಗಿರಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ಹೆಚ್ಚಿನ ಪರಿಗಣನೆಯ ಮೇಲೆ ನೀವು ನಿಜವಾಗಿಯೂ ನಿರ್ಧರಿಸಿದರೆ ಅಗತ್ಯ ಹೊಸ ಕಾಲಮ್ ಸೇರಿಸಿ - ಸಮಸ್ಯೆ ಇಲ್ಲ, ಕೆಳಗೆ ಒಂದು ಸಾಲಿನ ಪರಿಹಾರವಿದೆ. ಪರಿಹಾರವೆಂದರೆ ಸರ್ಕ್ಯೂಟ್ನ ವಿಕಾಸ!

ಸ್ಕೀಮಾ ವಿಕಾಸ ಎಂದರೇನು?

ಸ್ಕೀಮಾ ವಿಕಸನವು ಬಳಕೆದಾರರಿಗೆ ಕಾಲಾನಂತರದಲ್ಲಿ ಬದಲಾಗುವ ಡೇಟಾದ ಪ್ರಕಾರ ಪ್ರಸ್ತುತ ಟೇಬಲ್ ಸ್ಕೀಮಾವನ್ನು ಸುಲಭವಾಗಿ ಬದಲಾಯಿಸಲು ಅನುಮತಿಸುವ ಒಂದು ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ. ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಲು ಸ್ಕೀಮಾವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಳವಡಿಸಿಕೊಳ್ಳಲು ಅನುಬಂಧ ಅಥವಾ ಪುನಃ ಬರೆಯುವ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಇದನ್ನು ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.

ಸ್ಕೀಮಾ ವಿಕಾಸವು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ?

ಹಿಂದಿನ ವಿಭಾಗದ ಉದಾಹರಣೆಯನ್ನು ಅನುಸರಿಸಿ, ಸ್ಕೀಮಾ ಅಸಂಗತತೆಯಿಂದಾಗಿ ಹಿಂದೆ ತಿರಸ್ಕರಿಸಲಾದ ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಲು ಡೆವಲಪರ್‌ಗಳು ಸ್ಕೀಮಾ ವಿಕಾಸವನ್ನು ಸುಲಭವಾಗಿ ಬಳಸಬಹುದು. ಸರ್ಕ್ಯೂಟ್ ವಿಕಾಸವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ .option('mergeSchema', 'true') ನಿಮ್ಮ ಸ್ಪಾರ್ಕ್ ತಂಡಕ್ಕೆ .write или .writeStream.

# Добавьте параметр mergeSchema
loans.write.format("delta") 
           .option("mergeSchema", "true") 
           .mode("append") 
           .save(DELTALAKE_SILVER_PATH)

ಗ್ರಾಫ್ ವೀಕ್ಷಿಸಲು, ಕೆಳಗಿನ ಸ್ಪಾರ್ಕ್ SQL ಪ್ರಶ್ನೆಯನ್ನು ರನ್ ಮಾಡಿ

# Создайте график с новым столбцом, чтобы подтвердить, что запись прошла успешно
%sql
SELECT addr_state, sum(`amount`) AS amount
FROM loan_by_state_delta
GROUP BY addr_state
ORDER BY sum(`amount`)
DESC LIMIT 10

ಡೆಲ್ಟಾ ಸರೋವರಕ್ಕೆ ಧುಮುಕುವುದು: ಸ್ಕೀಮಾ ಜಾರಿ ಮತ್ತು ವಿಕಸನ
ಪರ್ಯಾಯವಾಗಿ, ಸೇರಿಸುವ ಮೂಲಕ ನೀವು ಸಂಪೂರ್ಣ ಸ್ಪಾರ್ಕ್ ಸೆಷನ್‌ಗೆ ಈ ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿಸಬಹುದು spark.databricks.delta.schema.autoMerge = True ಸ್ಪಾರ್ಕ್ ಕಾನ್ಫಿಗರೇಶನ್‌ಗೆ. ಆದರೆ ಇದನ್ನು ಎಚ್ಚರಿಕೆಯಿಂದ ಬಳಸಿ, ಏಕೆಂದರೆ ಸ್ಕೀಮಾ ಜಾರಿಯು ಇನ್ನು ಮುಂದೆ ಉದ್ದೇಶಪೂರ್ವಕವಲ್ಲದ ಸ್ಕೀಮಾ ಅಸಂಗತತೆಗಳಿಗೆ ನಿಮ್ಮನ್ನು ಎಚ್ಚರಿಸುವುದಿಲ್ಲ.

ವಿನಂತಿಯಲ್ಲಿ ನಿಯತಾಂಕವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ mergeSchema, ಡೇಟಾಫ್ರೇಮ್‌ನಲ್ಲಿರುವ ಆದರೆ ಟಾರ್ಗೆಟ್ ಟೇಬಲ್‌ನಲ್ಲಿಲ್ಲದ ಎಲ್ಲಾ ಕಾಲಮ್‌ಗಳನ್ನು ಬರೆಯುವ ವಹಿವಾಟಿನ ಭಾಗವಾಗಿ ಸ್ಕೀಮಾದ ಅಂತ್ಯಕ್ಕೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೇರಿಸಲಾಗುತ್ತದೆ. ನೆಸ್ಟೆಡ್ ಕ್ಷೇತ್ರಗಳನ್ನು ಸಹ ಸೇರಿಸಬಹುದು ಮತ್ತು ಇವುಗಳನ್ನು ಅನುಗುಣವಾದ ರಚನೆಯ ಕಾಲಮ್‌ಗಳ ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಲಾಗುತ್ತದೆ.

ದಿನಾಂಕ ಎಂಜಿನಿಯರ್‌ಗಳು ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಹಳೆಯ ಕಾಲಮ್‌ಗಳನ್ನು ಆಧರಿಸಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಮಾದರಿಗಳನ್ನು ಮುರಿಯದೆಯೇ ತಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಯಂತ್ರ ಕಲಿಕೆ ಉತ್ಪಾದನಾ ಕೋಷ್ಟಕಗಳಿಗೆ ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು (ಬಹುಶಃ ಇತ್ತೀಚೆಗೆ ಟ್ರ್ಯಾಕ್ ಮಾಡಿದ ಮೆಟ್ರಿಕ್ ಅಥವಾ ಈ ತಿಂಗಳ ಮಾರಾಟದ ಕಾರ್ಯಕ್ಷಮತೆಯ ಕಾಲಮ್) ಸೇರಿಸಲು ಈ ಆಯ್ಕೆಯನ್ನು ಬಳಸಬಹುದು.

ಟೇಬಲ್ ಸೇರ್ಪಡೆ ಅಥವಾ ಪುನಃ ಬರೆಯುವ ಸಮಯದಲ್ಲಿ ಸ್ಕೀಮಾ ವಿಕಾಸದ ಭಾಗವಾಗಿ ಕೆಳಗಿನ ರೀತಿಯ ಸ್ಕೀಮಾ ಬದಲಾವಣೆಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ:

  • ಹೊಸ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ (ಇದು ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಸನ್ನಿವೇಶವಾಗಿದೆ)
  • ನಲ್‌ಟೈಪ್‌ನಿಂದ ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಬದಲಾಯಿಸುವುದು -> ಯಾವುದೇ ಇತರ ಪ್ರಕಾರ ಅಥವಾ ಬೈಟ್‌ಟೈಪ್‌ನಿಂದ ಪ್ರಚಾರ ಮಾಡುವುದು -> ಶಾರ್ಟ್‌ಟೈಪ್ -> ಇಂಟೀಜರ್‌ಟೈಪ್

ಸ್ಕೀಮಾ ವಿಕಾಸದೊಳಗೆ ಅನುಮತಿಸದ ಇತರ ಬದಲಾವಣೆಗಳಿಗೆ ಸ್ಕೀಮಾ ಮತ್ತು ಡೇಟಾವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಪುನಃ ಬರೆಯಬೇಕಾಗುತ್ತದೆ .option("overwriteSchema", "true"). ಉದಾಹರಣೆಗೆ, "Foo" ಕಾಲಮ್ ಮೂಲತಃ ಪೂರ್ಣಾಂಕವಾಗಿದ್ದರೆ ಮತ್ತು ಹೊಸ ಸ್ಕೀಮಾ ಸ್ಟ್ರಿಂಗ್ ಡೇಟಾ ಪ್ರಕಾರವಾಗಿದ್ದರೆ, ಎಲ್ಲಾ ಪ್ಯಾರ್ಕ್ವೆಟ್(ಡೇಟಾ) ಫೈಲ್‌ಗಳನ್ನು ಪುನಃ ಬರೆಯಬೇಕಾಗುತ್ತದೆ. ಅಂತಹ ಬದಲಾವಣೆಗಳು ಸೇರಿವೆ:

  • ಕಾಲಮ್ ಅನ್ನು ಅಳಿಸಲಾಗುತ್ತಿದೆ
  • ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕಾಲಮ್‌ನ ಡೇಟಾ ಪ್ರಕಾರವನ್ನು ಬದಲಾಯಿಸುವುದು (ಸ್ಥಳದಲ್ಲಿ)
  • ಸಂದರ್ಭದಲ್ಲಿ ಮಾತ್ರ ಭಿನ್ನವಾಗಿರುವ ಕಾಲಮ್‌ಗಳನ್ನು ಮರುಹೆಸರಿಸುವುದು (ಉದಾಹರಣೆಗೆ, "ಫೂ" ಮತ್ತು "ಫೂ")

ಅಂತಿಮವಾಗಿ, ಸ್ಪಾರ್ಕ್ 3.0 ರ ಮುಂದಿನ ಬಿಡುಗಡೆಯೊಂದಿಗೆ, ಸ್ಪಷ್ಟವಾದ DDL ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ (ಆಲ್ಟರ್ ಟೇಬಲ್ ಬಳಸಿ), ಬಳಕೆದಾರರಿಗೆ ಟೇಬಲ್ ಸ್ಕೀಮಾಗಳಲ್ಲಿ ಈ ಕೆಳಗಿನ ಕ್ರಿಯೆಗಳನ್ನು ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ:

  • ಕಾಲಮ್ಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ
  • ಕಾಲಮ್ ಕಾಮೆಂಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸುವುದು
  • ವಹಿವಾಟು ಲಾಗ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಲಾದ ಸಮಯದ ಉದ್ದವನ್ನು ಹೊಂದಿಸುವಂತಹ ಟೇಬಲ್‌ನ ನಡವಳಿಕೆಯನ್ನು ನಿಯಂತ್ರಿಸುವ ಟೇಬಲ್ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಹೊಂದಿಸುವುದು.

ಸರ್ಕ್ಯೂಟ್ ವಿಕಾಸದ ಪ್ರಯೋಜನವೇನು?

ನೀವು ಯಾವಾಗ ಬೇಕಾದರೂ ಸ್ಕೀಮಾ ವಿಕಾಸವನ್ನು ಬಳಸಬಹುದು ಉದ್ದೇಶಿಸಿದೆ ನಿಮ್ಮ ಟೇಬಲ್‌ನ ಸ್ಕೀಮಾವನ್ನು ಬದಲಾಯಿಸಿ (ನೀವು ಆಕಸ್ಮಿಕವಾಗಿ ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್‌ಗೆ ಕಾಲಮ್‌ಗಳನ್ನು ಸೇರಿಸಿದಾಗ ಅದು ಇರಬಾರದು). ನಿಮ್ಮ ಸ್ಕೀಮಾವನ್ನು ಸ್ಥಳಾಂತರಿಸಲು ಇದು ಸುಲಭವಾದ ಮಾರ್ಗವಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸರಿಯಾದ ಕಾಲಮ್ ಹೆಸರುಗಳು ಮತ್ತು ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಘೋಷಿಸದೆಯೇ ಸೇರಿಸುತ್ತದೆ.

ತೀರ್ಮಾನಕ್ಕೆ

ನಿಮ್ಮ ಟೇಬಲ್‌ಗೆ ಹೊಂದಿಕೆಯಾಗದ ಯಾವುದೇ ಹೊಸ ಕಾಲಮ್‌ಗಳು ಅಥವಾ ಇತರ ಸ್ಕೀಮಾ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ಕೀಮಾ ಜಾರಿಯು ತಿರಸ್ಕರಿಸುತ್ತದೆ. ಈ ಉನ್ನತ ಗುಣಮಟ್ಟವನ್ನು ಹೊಂದಿಸುವ ಮತ್ತು ನಿರ್ವಹಿಸುವ ಮೂಲಕ, ವಿಶ್ಲೇಷಕರು ಮತ್ತು ಎಂಜಿನಿಯರ್‌ಗಳು ತಮ್ಮ ಡೇಟಾವು ಅತ್ಯುನ್ನತ ಮಟ್ಟದ ಸಮಗ್ರತೆಯನ್ನು ಹೊಂದಿದೆ ಎಂದು ನಂಬಬಹುದು, ಅದನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಮತ್ತು ಸ್ಪಷ್ಟವಾಗಿ ಸಂವಹಿಸುತ್ತದೆ, ಉತ್ತಮ ವ್ಯವಹಾರ ನಿರ್ಧಾರಗಳನ್ನು ಮಾಡಲು ಅವರಿಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ.

ಮತ್ತೊಂದೆಡೆ, ಸ್ಕೀಮಾ ವಿಕಸನವು ಸರಳಗೊಳಿಸುವ ಮೂಲಕ ಜಾರಿಗೊಳಿಸುವಿಕೆಯನ್ನು ಪೂರೈಸುತ್ತದೆ ಆರೋಪಿಸಿದ್ದಾರೆ ಸ್ವಯಂಚಾಲಿತ ಸ್ಕೀಮಾ ಬದಲಾವಣೆಗಳು. ಎಲ್ಲಾ ನಂತರ, ಕಾಲಮ್ ಅನ್ನು ಸೇರಿಸಲು ಕಷ್ಟವಾಗಬಾರದು.

ಯೋಜನೆಯ ಬಲವಂತದ ಅನ್ವಯವು ಯಾಂಗ್ ಆಗಿದೆ, ಅಲ್ಲಿ ಯೋಜನೆಯ ವಿಕಸನವು ಯಿನ್ ಆಗಿದೆ. ಒಟ್ಟಿಗೆ ಬಳಸಿದಾಗ, ಈ ವೈಶಿಷ್ಟ್ಯಗಳು ಶಬ್ದ ನಿಗ್ರಹ ಮತ್ತು ಸಿಗ್ನಲ್ ಟ್ಯೂನಿಂಗ್ ಅನ್ನು ಎಂದಿಗಿಂತಲೂ ಸುಲಭಗೊಳಿಸುತ್ತದೆ.

ಈ ಲೇಖನಕ್ಕೆ ಕೊಡುಗೆ ನೀಡಿದ ಮುಕುಲ್ ಮೂರ್ತಿ ಮತ್ತು ಪ್ರಣವ್ ಆನಂದ್ ಅವರಿಗೆ ನಾವು ಧನ್ಯವಾದಗಳನ್ನು ಅರ್ಪಿಸುತ್ತೇವೆ.

ಈ ಸರಣಿಯ ಇತರ ಲೇಖನಗಳು:

ಡೆಲ್ಟಾ ಸರೋವರಕ್ಕೆ ಧುಮುಕುವುದು: ವಹಿವಾಟು ಲಾಗ್ ಅನ್ನು ಅನ್ಪ್ಯಾಕ್ ಮಾಡುವುದು

ಸಂಬಂಧಿತ ಲೇಖನಗಳು

ಡೆಲ್ಟಾ ಲೇಕ್‌ನೊಂದಿಗೆ ಉತ್ಪಾದನಾ ದರ್ಜೆಯ ಯಂತ್ರ ಕಲಿಕೆ

ಡೇಟಾ ಸರೋವರ ಎಂದರೇನು?

ಕೋರ್ಸ್ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿದುಕೊಳ್ಳಿ

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ