juan_gandhi: (VP)
[personal profile] juan_gandhi
  // test how file can be unfolded into multiple columns
  public void testUnfoldingColumn() throws IOException {
    // Here's the file
    File file = getFile("smalldata/chicago/chicagoAllWeather.csv");

    // Get all its lines
    final List<String> lines = Files.readLines(file, Charset.defaultCharset());

    // Store it in H2O, with typed column as a wrapper (core H2O storage is a type-unaware Vec class)
    Column<String> source = willDrop(Strings.newColumn(lines));

    // Produce another (virtual) column that stores a list of strings as a row value
    Column<List<String>> split = new UnfoldingColumn<>(Functions.splitBy(","), source, 10);

    // now check that we have the right data
    for (int i = 0; i < lines.size(); i++) {
      // Since we specified width (10), the rest of the list is filled with nulls; have to ignore them.
      // It's important to have the same width for the whole frame..
      String actual = StringUtils.join(" ", Predicate.NOT_NULL.filter(split.apply(i)));
      // So, have we lost any data?
      assertEquals(lines.get(i).replaceAll("\\,", " ").trim(), actual);
    }
  }

Date: 2016-11-08 09:17 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Функтор, да. В функции Long -> T

Date: 2016-11-08 09:22 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
немного тогда по другой теме вопрос (просто интересно) - а почему именно Long? Int (два миллиона колонок) маловато? хотя может конечно и правильно ...

Date: 2016-11-08 09:52 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Не я придумал, что глобальный индекс у них Long; и, конечно, это не индекс колонки, а индекс записи.

Date: 2016-11-08 10:08 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
а понял тогда конечно все понятно
если записи то вполне адекватно

Date: 2016-11-08 09:25 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
и если я правильно понял - аппликативный, чтобы можно было колонки джойнить функциями?

Date: 2016-11-08 09:52 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Хм, не подумал про это. Да, именно так. :)

Хоть слайды рисуй, чесслово. Спасибо за хинт.

Date: 2016-11-08 10:11 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
чисто для прикола - а если колонку положим сделать монадой? что из этого получится? :)
я так понимаю что можно и мап-редюс на этом основании построить даже?

Date: 2016-11-08 10:19 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Как это монадой? Колонка в колонке - тоже колонка?

Мапредьюс строится для моноида, не для монады. Для монады... ну хотя бы траверсабл какой-то нужен.

Date: 2016-11-08 10:47 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
ну да я вот поэтому и спросил)

хотя ... ну а почему бы и нет? думаю вот вобщем какой семантический смысл можно бы приписать колонке в колонке))

я бы впрочем дали бы мне волю сделал бы колонку типом-стрелкой key -> value где key - произвольный тип. тогда точно мап-редюс сделать в два счета
но на такое они конечно наверное не пойдут :)

вобщем наверное для начала (чтоб передоза у них не было сразу же) достаточно будет аппликативного функтора над long -> t :))
Edited Date: 2016-11-08 10:49 pm (UTC)

Date: 2016-11-08 10:51 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
к слову ... монады они тоже в некотором смысле моноиды ... :) но это конечно я шучу)

Date: 2016-11-08 10:53 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
а теперь уже не шучу) траверсебел помоему легко можно сделать - любая функция агрегации типа sum, avg и тд дает вроде бы уже траверсебел, или нет?

а уж если задуматься над семантикой groupBy то помоему становится очевидно - да вот же она, монада :) ладно. это наверное не всё так сразу нужно делать)) а то на измену выпадут)
Edited Date: 2016-11-08 10:55 pm (UTC)

Date: 2016-11-08 11:01 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
хорошо а что если мы скажем что вот например колонка вида long -> (a -> (long -> b)) в результате работы groupBy это и есть искомый семантический смысл монады для колонки в колонке? :) это я просто для некоторого конструктивного логического результата размышлений над вопросом)

но может конечно это и не совсем монада, я не спорю... но похожа)
Edited Date: 2016-11-08 11:03 pm (UTC)

Date: 2016-11-08 11:24 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Что-то хитровато; я подумаю.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

May 2025

S M T W T F S
    1 2 3
456 7 8 9 10
11 121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 15th, 2025 08:49 pm
Powered by Dreamwidth Studios