Aktywne Wpisy
Urynowyurynator +114
Tez zauważyliście jak Polska się zwija? Jaką przyszłość będą miały obecnie rodzone pokolenia czy też takie, które maja teraz kilka lat?
W mojej rodzinnej gminnej mieścinie gdzie kiedyś mieszkałem zamknięto największy zakład pracy, który dawał pracę kilkuset osobom. Wszyscy na bruk. Obok w większym mieście powiatowym również niedługo zamknie się zakład, który ma potężne długi. Kilkaset osób ma bruk.
I to się dzieje w całym kraju, zakłady, korpo, wszyscy zwalniają. Źle się
W mojej rodzinnej gminnej mieścinie gdzie kiedyś mieszkałem zamknięto największy zakład pracy, który dawał pracę kilkuset osobom. Wszyscy na bruk. Obok w większym mieście powiatowym również niedługo zamknie się zakład, który ma potężne długi. Kilkaset osób ma bruk.
I to się dzieje w całym kraju, zakłady, korpo, wszyscy zwalniają. Źle się

Adkos +39
źródło: temp_file685206702467609170
Pobierz
![Kolejny przykład tego jak producenci utrudniają naprawę sprzętu AGD - [ENG]](https://wykop.pl/cdn/c3397993/51cf8f734b3be5d7eb8ce95269a499f0b0ff360474efaf4f42dd361f8e42a10d,q80.jpg)



1. 4 uniony
2. Pobrać tabelę z mappingiem
3. Zrobić joina (te 4 uniony i mapping)
5. Przerobić 2 kolumny na podstawie wartości, i dodać dwie puste kolumny
4. Wykonać prostą agregacje danych -> groupby po 5 kolumnach.
6. Wrzucić wyniki do nowej tabeli
Tabela z unionami ma łącznie 7k rekordów. (7k wierszy i 7 kolumn)
Tabela z mappingiem max 300 wierszy
Jednak cały czas mam problem z pamięcią, GC czy timeoutami. Próbowałem zwiększać limity pamięci jednak nic nie pomaga. Przeważnie dostaje error: gc overhead limit exceeded. Troche dziwne bo to jest raptowanie 7k rekordów, po agregacji ma wyjść ~~3k. Ktoś wie jak to rozwiązać?
#pyspark #spark #dataengineering #hadoop
#programowanie #python #scala
Komentarz usunięty przez autora
1. Przede wszsytkim dobrze już koledzy napisali: ogarnij to w pandasie - ale rozumiem, ze polityka firmy. Niemniej jednak możesz ogarnąć sobie: "toPandas()" i jedź ze wszystkim na pojedynczym nodzie w tedy.
2. Sprawdz joina. Nie masz multiplikowania wierszy? Joinujesz się po unikalnych kluczach?
3. Jaką masz configuracje clustra? Masz
2. Zrobie left joina po jednej kolumnie:
dfjoined = resultdf.join(dfmapping, resultdf['bill'].cast('int') == df_mapping['stp'], how='left')
3. Tego nie wiem, nie ja zarządzam architekturą
4. GC wyrzuca albo po agregacji jak chciałem zrobić df.count() na tabeli zagregowanej, lub przy inserInto jak chciałem wrzucić dataframe do tabeli SQL (jeżeli nie robie counta to zatrzymuje się na insercie,
Tam castujesz też do int jakaś kolumnę. Masz pewność, że nie ucinasz tym sposobem jakichś zer wiodących itp?
Dfmapping['stp'] to kolumna typu int i jest unikalna? Zrob na tej kolumnie count i distinct count i podaj wyniki.
Zrób printSchema dla tych dwóch dataFrame, które joinujesz.
Sprawdź scheme wszystkich df które joinujesz lub robisz uniona
. Ten błąd przy zapisie dotyczy bezpośrednio danych samych w sobie.
Albo Ci brakuje jakichś kolumn albo coś podobnego.
Masz to gdzieś na repo i możesz udostępnić? A jak nie to chociaż wrzuć na jakiś pastebin i podeślij.
Robisz coś na wzór?:
Select field1, field1, field3, sum(SAP.cases), field3
From table as SAP
Group by field3
co do kodu to: df = spark.sql(tutajkwerendaz_linku).cache().
Masz jak to teraz sprawdzić?
Sprawdz to:
https://pastebin.com/HZF4BF2G
Powinno zadziałać zamiast Twojego zapytania. Wklej do swojego kodu.
Jak nie zaskoczy to znaczy, ze słabo mi się myśli po północy i pomyślimy nad tym jutro :P
@PiotrokeJ: To już jest kwestia samego zarządzania (wybacz ale nie mam pojęcia jak to inaczej ubrać w słowa) translacją samego SQL na MapReduce na Hadoopie.
W tym przypadku Hadoop trochę inaczej ogarnia takie zapytanie niż spark. Dlatego jak odpalasz coś bezpośrednio na hadoopie to możesz dostać wyniki (błędne lub dobre), a w sparku już