Cześć na Uniwersytecie w dziedzinie nauki dowiedz się, że dowiedzieliśmy się, że gdybyśmy chcieli pracować z małymi danymi, powinniśmy używać pandy, a jeśli pracujemy z dużymi danymi, Schould użyć iskry, w przypadku programistów Python Prapark.

Ostatnio widziałem w Hackathonie w chmurze (Azure Synapse, który działa w środku w iskrze) Importowanie pandy w notebooku (przypuszczam, że kod jest dobrą sprawą, został wykonany z Microsoft Lugs)

import pandas 
from azureml.core import Dataset
training_pd = training_data.toPandas().to_csv('training_pd.csv', index=False)

Dlaczego to robią?

2
Enrique Benito Casado 11 luty 2021, 11:36

3 odpowiedzi

Najlepsza odpowiedź

Basowo wydaje się, że osoba, która sprawia, że praca czuje się bardziej zgodna w pandy. Oczywiście pandy nie skaluje i jeśli ustawiono dane, potrzebujesz więcej pamięci RAM i prawdopodobnie szybszy procesor (szybciej pod względem pojedynczej podstawowej wydajności). Chociaż może to ograniczyć dla niektórych scenariuszy, wydaje się, że w przykładzie CSV nie byłby wystarczająco duży, aby użyć iskry. Nie widzę żadnego innego powodu.

1
CristianLH 11 marzec 2021, 09:50

Pandas Dataframes nie obsługuje równoległości. Z drugiej strony, z panendami, nie potrzebujesz klastra, masz więcej bibliotek i łatwe do rozszerzenia przykładów. I bądźmy prawdziwi, jego występ jest lepszy dla każdego zadania, które nie wymaga skalowania.

Więc, jeśli rozpoczniesz swoje informacje na temat życia, utknąłeś z dwiema rzeczami:

  • Zewnętrzna wiedza: gotowy kod, fragmenty i projekty;
  • Zwrócona wiedza: API, że wiesz dobrze i preferujesz więcej, wzory, gwarancje i czując, jak napisać ten kod ogólnie.

Do mężczyzny z młotkiem, wszystko wygląda jak paznokcie. I to nie zawsze jest złe. Jeśli masz surowe terminy, zrobione lepiej niż idealne! Lepiej użyj teraz pandy, niż uczyć się odpowiednich skalowalnych rozwiązań od lat.

Wyobraź sobie, że chcesz użyć notatnika Apache Zeppelin w trybie Pyspark, ze wszystkimi tymi fajnymi wizualizacjami. Ale to nie do końca spełnia twoje wymagania i myślisz o tym, jak to naprawić. Jednocześnie możesz natychmiast Google gotowe rozwiązanie dla pandy. To sposób na wyjazd; Nie masz innej opcji, aby spełnić swoje terminy.

Kolejne zgaduję, że jeśli piszesz kod w Pythonie, możesz go łatwo debugować w każdym dobrej IDE, jak Pycharm, używając interaktywnego debugera. I że zazwyczaj nie jest ważny dla notebooków online, zwłaszcza w trybie iskrowym. Czy znasz dobry debuger dla iskry? Nie wiem nic (ludzie z najlepszych narzędzi danych wtyczki do pomysłu próbują naprawić to dla SCALA, ale nie dla Pythona, o ile wiem). Musisz więc pisać kod w IDE, a następnie skopiuj go do notebooka.

I ostatni, ale może być tylko błąd. Ludzie nie zawsze doskonale wiedzą, co robią, zwłaszcza w dużym polu jako duże dane. Masz szczęście mieć ten kurs uniwersytecki. Średnia Joe w Internetach nie miała takiej opcji.

Powinienem tu zatrzymać, ponieważ tylko spekulacje.

1
Oleg Chirukhin 11 luty 2021, 11:39

Główną różnicą między pracą z Prappark a Pandasem jest składnia. Aby pokazać tę różnicę, zapewniam prosty przykład czytania w pliku parkietowym i wykonywanie niektórych transformacji danych. Jak widać, składnia jest zupełnie inna niż PYSPark i pandy, co oznacza, że wiedza w pandasie nie jest bezpośrednio przebywalna do PYSPARK.

# Pandas
pandasDF = pd.read_parquet(path_to_data)
pandasDF['SumOfTwoColumns'] = pandasDF['Column1'] + pandasDF['Column2']
pandasDF.rename({'Column1': 'Col1', 'Column2': 'Col2'}, axis=1, inplace=True)

# PySpark
sparkDF = spark.read.parquet(path_to_data)
sparkDF = sparkDF.withColumn('SumOfTwoColumns', col('Column1') + col('Column2'))
sparkDF = sparkDF.withColumnRenamed('Column1', 'Col1').withColumnRenamed('Column2', 'Col2')

Te różnice w użyciu, ale także w składni, oznaczają krzywą uczenia się podczas przesyłania z używania czystego kodu PANDAS do czystego kodu PYSPARK. Oznacza to również, że twój właściwy kod Pandasa nie może być używany bezpośrednio na iskry z PYSPark. Na szczęście istnieją rozwiązania, które umożliwiają korzystanie z kodu pandasu i wiedzy na temat iskry.

Rozwiązania do wykorzystania mocy iskrowej z pandy znajdują się głównie dwie opcje korzystania z kodu Pandas na iskry: Koalas i Pandas UDF

Chociaż nie zaleca się używania pandy podczas pracy z Prappark, ale czasami widziałem też, że ludzie robią to samo.

1
Amar Singh 11 luty 2021, 17:33